Encrypt、便利ですよね。無料でvalidな証明書が手に入るという事がこんなに便利だとは。無料で発行できるんだから外部からのアクセスを遮断しているイントラなサーバーもこれを使いたい。Encryptの証明書を発行する方法を考えてみた。Encryptは入力したドメインに対してHTTPで特定のファイル(.well-known/)にアクセスする事で所有権の確認を行っています。イントラサイトなどの外部からのHTTPアクセスを遮断しているサーバでは証明書を取得する事が出来ません。それとは別にDNS認証というものがありますが、これはこれで証明書発行時に提示されるトークンをDNSに登録する必要があり、Route53のような自動でレコードの更新が出来るDNSサーバーを利用していない場合は自動化が出来ません。(めんどくさいし)なので、出来ればHTTPで認証させたい。イントラだから外部のアクセスは遮断している。しよう?......よく考えてみて下さい。HTTPで特定のファイル(.well-known)にアクセスする。それはすなわち、その特定のファイルに対して応答できれば良いのです。リバースプロキシの出番ですね。前提条件?要は.well-knownへのアクセスをイントラ側に投げるだけなので、前提条件としてはリバースプロキシの使えるWebサーバーが外部からアクセスできる場所にあればOKです。フロント側という訳で、まずはフロント(リバースプロキシでイントラ側に投げる係)の設定から。「.well-known」へのアクセスをイントラ側にぶん投げるだけですね。フロント側のサーバの種類別に書いておきましょう。nginx.well-known以下のアクセスのみイントラ側に転送して、他は応答しないようにしています。}}ApacheProxyPassに変数を使う方法が良く分からなかった......バーチャルホストを複数用意する形で対応します。combined</VirtualHost>イントラ側イントラ側は流れて来た.well-knownなアクセスを捌いてやれば良いのですが、こちらも念のため.well-known以外は閲覧できない様に細工してやりましょう。Encrypt用のrootには/var/www/lets_encryptを使用すると仮定します。}}Apache特に考える必要はないですね。証明書の発行はイントラ側でいつも通り、letsencrypt-auto(今はcertbot-auto)で/var/www/lets_encryptを使用して証明書をお願いするだけです。Encrypt側がアクセスしてきた際にイントラ側のファイルを確認して満足して証明書を発行してくれます。図解するとこんな感じ。外側からのアクセスの時にリバースプロキシ側でHTTPのHOSTヘッダを書き換えて外側向けのVirtualHostで応答する。噛み砕いで表現すると、内側からアクセスされた時と外側からアクセスされた時に違うVirtualHostを利用する。異なるVirtualHostは不可侵でしょうから、そうすればイントラ向けコンテンツが外から見えてしまう事はないはず。そんな事しなくてもリバースプロキシ側で/.well-known/だけ通すようにすればそれ以外のアクセスは飛んでこないはずだが、もしもの事があってはいけないので念には念をという事で二重に防御。Encryptの証明書が期限切れを起こしていたの......続きを読む→[Zabbix]センサーの温度データを取得するZabbix(厳密にはLinux上で動作するzabbix-agent)には温度セ......続きを読む→ドメインレジストラ7社使ってみたので比較レビューこんにちは、生きてます。世の中には色々なドメインレジストラがあります。Encrypt製証......続きを読む→PREV[Bukkitプラグイン制作講座-其之五]コマンド、時々クラス分割NEXTmod_authnz_fcgiでRedmineのアカウントを使ってBasic認証を行うナカのヒト:HimaJyun​散って美しいのは桜だけです、情報はまとまっていた方が美しいのです。