Let’s Encrypt は無料で SSL/TLS 証明書を取得できるサービスです。
SSL/TLS 証明書は、証明書取得・管理ソフトウェアである、Certbot クライアントで実行されます。
各ディストリビューション毎のインストール・実行方法は次の個所で説明されています。
Certbot クライアントのインストール – Let’s Encrypt 総合ポータル
ここでは、CentOS6 で apache を SSL対応する場合について説明します。
準備
はじめに、/etc/httpd/conf.d/ssl.conf のバックアップをとっておきます。
これは、以降の手順での Certbot クライアント実行時に ssl.conf が上書きされるためです。
cp /etc/httpd/conf.d/ssl.conf /etc/httpd/conf.d/ssl.conf.bak
次に、EPELリポジトリを利用できるようにします。
root で作業します。
yum install epel-release
この後、ファイル /etc/yum.repos.d/epel.repo 内で enabled = 1 にして下さい。
これをしないと、EPELリポジトリが有効にならず、以降の手順で ./certbot-auto 実行時に、virtualenv 等が入らなくて失敗します。
SSL/TLS サーバ証明書の取得
Certbot クライアントをダウンロード・実行します。
次を root で実行して下さい。
wget https://dl.eff.org/certbot-auto chmod a+x certbot-auto ./certbot-auto
必要なパッケージがダウンロード・インストールされます。
なお、Let’s Encrypt の説明をしているサイトの中には、手動で Python2.7 のインストールが必要と記載しているものがありますが、現在では不要です。
2016年10月14日 の certbot-auto 0.9.3 以降、CentOS6標準の Python2.6 でもOKになっており、certbot-auto で自動的にインストールされます。
次の画面になったらドメイン名を入力します。
メールアドレスを入力します。
証明書の有効期限が近付いた場合の通知に使用されます。
Agree を選択して Enter を押します。
この表示が出たら Select を選択します。
何回か出るかも知れませんが、そのたびに選択して下さい。
この後、以下の表示が出たら、443番ポートへのアクセスが失敗しています。
Failed authorization procedure. XXXX.XX.XX (tls-sni-01): urn:acme:error:connection :: The server could not connect to the client to verify the domain :: Failed to connect to XX.XX.XX.XX:443 for TLS-SNI-01 challenge
本作業時に、Let’s Encrypt がサーバの443番ポート(HTTPS)にアクセスして来ます。
ファイアウォールでブロックしていないか確認して下さい。
また、Let’s Encrypt の接続は海外から行われます。
下記記事のような、国内からの接続のみ許可している場合も、一時的に解除してください。
iptables - 国内からの接続のみ許可して海外からの接続を遮断する パソコン鳥のブログ
以下表示が出たら完了です。
Certbot クライアントの実行によって、/etc/letsencrypt 下に証明書ファイルが取得されます。
また、ssl.conf の下記項目が、/etc/letsencrypt 下の証明書ファイルを参照するように追加/上書きされます。
ServerName SSLCertificateChainFile SSLCertificateFile SSLCertificateKeyFile
これで、ブラウザから「https://あなたのドメイン名」でアクセスできるようになります。
参考
ユーザーガイド – Let’s Encrypt 総合ポータル
Certbot クライアントのインストール – Let’s Encrypt 総合ポータル
コメント