Let’s encryptでサラッとHTTPSする

Pocket

もうそこかしこに情報あるだろうけど、手元で実験出来たので取り敢えず記録。

状況は、

・http://test.tea-soak.org:12345で運用中とする(ホストは192.168.0.5)
・http://tea-soak.org:80でも別サービスを運用中(ホストは192.168.0.4)

で、test.の方をHTTPSにする。各ドメインは同じグローバルIPアドレスを指しているが、ポート番号によって区別し、192.168.0.5に行くか192.168.0.4に行くかをルータで振り分けている。

 

ArchLinuxを使っているのでLet’s encrypt – ArchWikiの通りに。

$ sudo pacman -S certbot
$ certbot certonly --manual
The following error was encountered:
[Errno 13] Permission denied: '/var/log/letsencrypt/letsencrypt.log'
If running as non-root, set --config-dir, --work-dir, and --logs-dir to writeable paths.

面倒なのでroot(sudo)でやりなおす

$ sudo certbot certonly --manual
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Enter email address (used for urgent renewal and security notices) (Enter 'c' to cancel):honyarara@honyahonya.com

Please read the Terms of Service at ...
(A)gree/(C)ancel: A

Would you be willing to share your email address...
(Y)es/(N)o: n

Please enter in your domain names(s) (comma and/or space separated)  (Enter 'c' to cancel):test.tea-soak.org
...
Make sure your web server displays the following content at http://test.tea-soak.org/.well-known/acme-challenge/LT6x2... before continuing:

LT6x2...k4.JenbAW...

If you don't have HTTP server configured, you can run the following command on the target server (as root):
...
Press Enter to Continue

(長くなってしまうので抜粋しまくっておいた)

Press Enter to Continueのところで止まるので、http://test.tea-soak.org/.well-known/acme-challenge/LT6x2…でアクセスできるようにファイルを配置する。具体的にはfollowing command on the target server以下に並んでいるコマンドを参考になんとかする。

ドメインの存在確認のacme-challenge(そういう意味だよね?)はhttp://test.tea-soak.org:80に行くと思われるので、つまり192.168.0.4にアクセスが飛んでしまう。今回は面倒なので192.168.0.4に所定のファイルを設置した。

うまくいくと、/etc/letsencrypt/live/test.tea-soak.org/以下に鍵と証明書が保存されるはず。

privkey.pem:証明書の秘密鍵
fullchain.pem:証明書(多くのサーバソフトで使えるらしい)

各ファイルの説明はREADMEに入っている(上記はてきとう和訳)

 

test.tea-soak.orgではnginxが動いているので設定をいじる。

大雑把に以下みたいな感じ

server {
listen 12345;
server_name test.tea-soak.org;
ssl on;
ssl_certificate /etc/letsencrypt/live/test.tea-soak.org/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/test.tea-soak.org/privkey.pem;
]

あとはsudo systemctl restart nginxすると設定が有効になるはず

従来通りHTTPアクセスすると400 Bad Requestが返ってくるが、HTTPSではきちんとアクセスできることを確認しておしまい。

 

このやり方だと、証明書の更新は自動では出来ない。実験環境でなく本番環境で使うなら、こういうところの管理は自動化したいところだし、ArchWikiの下の方読もう()

お茶漬け

たまーに飲み屋で食べるお茶漬けめちゃウマい

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です