lets encryptを使ったhttpsサポートの実現

2016/09/22 5:49 に 森山誠二郎 が投稿   [ 2018/07/26 20:05 に更新しました ]
注意(2018/6/13追記):certbotの仕様がかわって443ポートを開けるのは無効になった -> 80ポートを開けること!
         (2018/7/27追記):上記変更は一時的なものだったようで、443ポートを開ける必要がある。(80ポート開けるかは不明)
      この時、httpdを動かしたままだと、Problem binding to port 443: Could not bind to IPv4 or IPv6.というエラーがでる。
      私の場合、以下の手続きが必要(次回確認する)
        ・2つのルータの443(と80)ポートを開ける
    ・httpdは多分ストップする
        ・./letsencrypt-auto certonly --standalone -d alb.anagix.com
        ・httpd再起動
        ・ルータ設定を戻す

更新についてのメモ
最初443のポートが使われているとのエラー。
httpdをsystemctl stop httpdしてもダメ。docker stop (gitlab)してもダメ。chef-server-ctl stop だったみたい。
ルータの443に対するポートマッピングをALBサーバのローカルIPに変更する必要があった。

/root/letsencrypt/letsencrypt-autoを使う

1.SSL証明書の入手
 letsencryptをインストールした場所で
./letsencrypt-auto certonly --standalone -d alb.anagix.com
 を実行すれば、以下が作られる

 /etc/letsencrypt/live/alb.anagix.com:
  合計 0
  drwxr-xr-x 2 root root 75  9月 20 14:59 .
  drwx------ 5 root root 75  9月 20 16:12 ..
  lrwxrwxrwx 1 root root 38  9月 20 14:59 cert.pem -> ../../archive/alb.anagix.com/cert1.pem
  lrwxrwxrwx 1 root root 39  9月 20 14:59 chain.pem -> ../../archive/alb.anagix.com/chain1.pem
  lrwxrwxrwx 1 root root 43  9月 20 14:59 fullchain.pem -> ../../archive/alb.anagix.com/fullchain1.pem
  lrwxrwxrwx 1 root root 41  9月 20 14:59 privkey.pem -> ../../archive/alb.anagix.com/privkey1.pem

2.jupyterhubのhttps化
 以下を /etc/jupyterhub/jupyterhub.pyに加える
JupyterHub.ssl_cert = u'/etc/letsencrypt/live/alb.anagix.com/fullchain.pem'
c.JupyterHub.ssl_key = u'/etc/letsencrypt/live/alb.anagix.com/privkey.pem'

 jupyterの起動:
    jupyterhub --ip=192.168.0.105 --config=/etc/jupyterhub/jupyterhub.py

3.chef serverのlets encrypt化
 これまでは、おれおれ証明を使っていた
  /var/opt/opscode/nginx/ca: を以下のように変更した
 lrwxrwxrwx  1 root    root     51  9月 22 21:45 home.anagix.com.crt -> /etc/letsencrypt/live/home.anagix.com/fullchain.pem
 lrwxrwxrwx  1 root    root     49  9月 22 21:45 home.anagix.com.key -> /etc/letsencrypt/live/home.anagix.com/privkey.pem

 途中で、502 Bad Gatewayというエラーがでるようになった。chef-server-ctl reconfigureしてもrestartしても改善しなかったが、本体をrebootしたら直った!

4.phusion passengerでapacheを使ったALB
  これまで、http://alb.angix.com:8180/でアクセスしたものを、https://alb.anagix.com:8183/に変更。
 たとえば、http://alb.anagix.com:8180/projects/183は、https://alb.anagix.com:8183/projects/183
  にrewriteするようにした。
 そのため、httpd.confに以下を記述し
Listen 8180
Listen 8183
 alb.confを以下のように変更した:

<VirtualHost *:8180>
   ServerName alb.anagix.com
   DocumentRoot /home/moriyama/work/alb2/public
   RewriteEngine on
   RewriteRule ^(.*)$ https://alb.anagix.com:8183$1 [R,L]
</VirtualHost>

<VirtualHost *:8183>
   ServerName alb.anagix.com
  ...
   SSLEngine on
   SSLCertificateFile     /etc/letsencrypt/live/alb.anagix.com/fullchain.pem
   SSLCertificateKeyFile  /etc/letsencrypt/live/alb.anagix.com/privkey.pem
   SSLCertificateChainFile /etc/letsencrypt/live/alb.anagix.com/chain.pem
</VirtualHost>


5.gitlab
6.docker registry
  letsencryptのSSL証明書でdocker registryを動かすに書いたように、/etc/letsencrypt/live/alb.anagix.comで
  run-docker-registry を実行する

注意: 443はrouterで変なところに飛ばしているので(優先度7)、105に暫時飛ばす必要あり
Comments