Changes between Initial Version and Version 1 of linux/LetsEncrypt


Ignore:
Timestamp:
2017/05/04 16:56:58 (2 years ago)
Author:
yuna
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • linux/LetsEncrypt

    v1 v1  
     1= Let's Encrypt 
     2 
     3Webサーバの後ろにある他のサーバでLet's Encryptの証明書を取得する方法を考える。 
     4 
     5== 環境 
     6 
     7下記のような環境でLet's Encryptで証明書を取得する方法を考えてみる。 
     8 
     9 
     10{{{ 
     11[作業マシン(プライベートネット内のマシン)]-------[Web Server(DMZ)]----[Router]-----[インターネット] 
     12}}} 
     13 
     14Let's Encryptはホストの認証にWebサーバ内の.well-knownディレクトリにホスト確認用のチャレンジングトークンを配置 
     15し、証明書を作成しようとするホストが確かに申請者の管理下のものであることを判定する。 
     16そのため、基本的には、certbotコマンドはWebサーバ上で実行する必要がある。 
     17ただし、Webサーバが本番環境であったり、あるいは古い環境でcertbotが正しく動作しない場合、 
     18他のマシンでLet's Encryptの証明書をなんとか取得できないか考えてみた。 
     19 
     20まず、Let's Encryptのサーバからトークンを確認できる必要がある。それは、.well-knownディレクトリ 
     21に配置されることを前提に動作する。 
     22 
     23簡単に証明書の作成を行いたいので、Dockerコンテナを利用することにしたが、sshfsボリュームプラグイン 
     24を利用して、DockerコンテナにWebサーバの/var/www/html/.well-knownディレクトリをボリュームとして 
     25アタッチすることにした。sshfsは、sshを利用してリモートのマシンを直接マウントできるので、NFSなどを 
     26利用する必要がないメリットがある。 
     27 
     28{{{ 
     29                                                  
     30  /var/www/html/.well-known  <----(sshfs)----   /var/www/html/.well-known 
     31  (Dockerコンテナ)                                 
     32[作業マシン(プライベートネット内のマシン)]-------[Web Server(DMZ)] 
     33                                                  123.30.2.12 
     34}}} 
     35 
     36では、やってみよう。 
     37 
     38== 1. 作業マシン上にDockerを入れる 
     39 
     40ここは、適当にDocker環境を用意してください。 
     41 
     42== 2. Docker sshfsプラグインをインストール 
     43 
     44下記のコマンドで、sshfsプラグインをインストールします。 
     45 
     46{{{ 
     47# docker plugin install vieux/sshfs 
     48}}} 
     49 
     50 
     51== 3. Webサーバ上の/var/www/.well-knownディレクトリからボリュームを作成 
     52 
     53Webサーバ上で/var/www/.well-knownディレクトリを作成する。 
     54そして、作業マシン上で、下記のようなコマンドで.well-knownディレクトリ 
     55からDockerボリュームを作成する。 
     56 
     57{{{ 
     58# docker volume create -d vieux/sshfs -o sshcmd=myaccount@123.30.2.12:/var/www/.well-known -o password=mypasswd letsencrypt-well-known 
     59}}} 
     60 
     61== 4. 証明書の作成 
     62 
     63作業マシン上で、Let's Encrypt SSLの証明書取得コンテナを実行し、証明書を取得する。 
     64 
     65{{{ 
     66# docker run -it --name ssltest --rm  
     67         -v /etc/letsencrypt:/etc/letsencrypt 
     68         -v "letsencrypt-well-known:/var/www/html/.well-known" quay.io/letsencrypt/letsencrypt:latest \ 
     69         certonly --preferred-challenges http-01 -d ssltmp1.ultimania.org -d ssltmp2.ultimania.org -d ssltmp3.ultimania.org 
     70}}} 
     71 
     72実行がうまくいけば、Conguratulation!のメッセージと共に 作業マシン上の/etc/letsencrypt/live/xxxx(ホスト名)に証明書と秘密鍵が作成される。