Let’s EncryptでSSL無料証明書を使ってみる
2018年7月21日Linux Tips, Security Tips, テクニカル, トピックス, ノウハウ
世の中では7月24日のChrome68の驚異に向かってSSL化へ着実にサイトを切り替えるところが多くなっています。でもサイトを沢山持っているところはかなりのお金の負担になりますね。どうするんだろう?と思ってたらLet’s EncryptでSSL無料証明書が作れるんだね。でも3ヶ月更新のようです。
色々と今後このまま続くと思えないが当座は目下SSL化を目論んでいるGoogleにしてもこの証明書は短期的に見ればまともなサイトの救済策になるのであったほうが良い。長期的には排除か順位評価を低くするというシナリオは見えてくる。個人的には、テストサイトでは十分利用価値があるとは思っています。特に今はドメインのワイルドカード証明書も作れるようだからプロトタイプサイトでホスト名だけ変更して、テストドメインは同じで使えば作業工数が減りますね。
使わないであれこれ言うよりは、まずは使ってみるというのは大事だね。ということで使ってみましたので、その備忘録を残したいと思います。
Let’s Encryptシステムのインストール方法
ドメインはtest.serve.netと仮定してやってみました。必ずそのサイトが稼働しているサイトで作業を行う必然性があります。作業する際にそのドメインのドキュメントルート配下にもコマンド実行時に細工が入るらしいので必ず稼働しているドメインである必要があるのです。インストールする場所はどこでも良いのだけど外部ツールの導入は大体が/usr/localもしくは/optなので今回は/optで行ってみたいと思います。令和3年11月28日に記事更新しました。記事の下部にCentOS8/Amazon Linux2でLet’s Encryptを使う場合を掲載しています。今はこの方法が本流です。前段のやり方は既に廃れて無効になっていると思います。導入済みの方がアップデートは可能ですが新規で導入の場合は下部のやり方を参考にしてください。
1 2 |
# cd /opt # git clone https://github.com/letsencrypt/letsencrypt |
ドキュメントルートに処理と認証を行い、対象ドメイン用の証明書群を作る。
certbot-autoコマンドは-wでドキュメントルートを指定し、-d で対象ホスト名(fqdn)、–emailで更新通知メルアドを指定します。
証明書は/etc/letsencrypt/live/test.serve.netのフォルダーに作成されます。
1 2 3 4 5 6 7 |
# /opt/letsencrypt/certbot-auto certonly --non-interactive --agree-tos --webroot -w /opt/www/html -d test.serve.net --email test@serve.net # ls -l /etc/letsencrypt/live/ 合計 4 drwxr-xr-x 2 root root 4096 7月 21 19:04 test.serve.net # cd test.serve.net # ls README cert.pem chain.pem fullchain.pem privkey.pem |
※通常はcert.pem,chain.pem,privkey.pemがあれば十分。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
<VirtualHost *:443> DocumentRoot /opt/www/html ServerName test.serve.net:443 SSLEngine on SSLCertificateFile /etc/letsencrypt/live/test.serve.net/cert.pem SSLCertificateKeyFile /etc/letsencrypt/live/test.serve.net/privkey.pem SSLCertificateChainFile /etc/letsencrypt/live/test.serve.net/chain.pem SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown SSLHonorCipherOrder ON SSLProtocol all -SSLv2 -SSLv3 -TLSV1 SSLCipherSuite EECDH+HIGH:EDH+HIGH:HIGH:MEDIUM:+3DES:!ADH:!RC4:!MD5:!aNULL:!eNULL:!SSLv2:!LOW:!EXP:!PSK:!SRP:!DSS:!KRB5 ErrorLog ${APACHE_LOG_DIR}/test.serve.net-ssl.error.log CustomLog ${APACHE_LOG_DIR}/test.serve.net_access.log combined <Directory "/opt/www/html"> AllowOverride All Options All -Indexes </Directory> </VirtualHost> |
WEBサーバの再起動を行う
以下を実施すればhttpsでアクセスが行なえます。
1 2 3 |
# systemctl reload apache2 <--Ubuntu or Debian あるいは # systemctl restart httpd <--CentOS,RedHat,Fedora |
使ってみた感想
Let’s EncryptはPCだけではなくてスマホから使っても全く問題はなかった。短期的にはオールhttps化の回避策にはなるだろうと思うが、これはネットワーク機器用や実験用に使うべきと思います。恒久的に使ってはいけません。理由は認証が自動で所有者の正当な認証がされないSSL発行は危険だし、実際事件が起きているようなのでGoogleが恒久的には到底許すと思えない。ある程度の猶予期間や混沌とする検索エンジン世界の次のどうあるべきかが見えてきた段階で消滅するか限定的な使い方に変化するだろうと予測する。
ライセンス更新処理
放おって置くと3ヶ月でライセンスが止まるため、更新処理が定期的に必要です。更新が成功したらWEBサーバを再起動してください。
1 2 3 |
# cd /opt # cd /opt/letsencrypt # ./certbot-auto renew --dry-run |
CentOS8/Amazon Linux2でLet’s Encryptを使う場合
EPELを予めインストールしておいてください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
AWS Amazon Linux2 apacheの場合 # yum install -y certbot python2-certbot-apache AWS Amazon Linux2 nginxの場合 # yum install -y certbot python2-certbot-nginx CentOS8 Apacheの場合 # dnf install certbot python3-certbot-apache CentOS8 NGINXの場合 # dnf install certbot python3-certbot-nginx # systemctl stop httpd # certbot certonly -a standalone -d www.example.net # vi /etc/httpd/conf.d/ssl.conf Let's EncryptのSSL鍵のパスを設定 # systemctl start httpd |
Snapでインストールしてlet’s Encryptをやる方法
この方法が今では主流とされている。EPELは予め入れておくこと。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
# yum install snapd # systemctl enable --now snapd.socket # ln -s /var/lib/snapd/snap /snap # snap install core # snap refresh core # snap install --classic certbot # ln -s /snap/bin/certbot /usr/bin/certbot # vi /etc/httpd/conf.d/ssl.conf 追加ドメインを仮想サーバ設定で定義する # certbot --apache ドメイン候補が出てくるのでSSLを取得するためのチョイスをする。 # systemctl restart httpd |
タグ: github, Let'sEncrypt, SSL証明書, インストール, 無料証明書