SSL の証明書を買おうとすると、安いサイトでは数千円、高いところでは数万もするものもあります。
企業で買うには、そんなに値が張るものではありませんが、個人で運用しているサイトや
試しに立てたサーバなどに利用するには、少し躊躇してしまう金額です。
そこで、openssl コマンドを使って、自ら証明書を作成する手順が今まで誌面やサイトで紹介されてきました。
しかし、これは俗に「オレオレ証明書」と呼ばれる証明書で、ウェブブラウザで参照すると
信頼性を検証できないという警告が表示されてしまいます。
これは、ウェブブラウザが知っている認証機関でない証明書機関が発行した証明書であるため、
通信に割り込んだ盗聴者が偽造したものと区別出来ないため警告を出しているのです。
まさに俺が作った、俺の為の証明書なのです。
目次
Let’s Encrypt とは
Let’s Encrypt は、Mozilla, Cisco, Akamai などのメンバーが、HTTPSの普及を行っている、米国カリフォルニア州の公益法人 ISRG(Internet Security Research Group)に
より運営されているサービスで、このサービスを利用する事によりウェブブラウザが知っている認証機関の証明書を
無料で取得する事が出来るのです。
ボードメンバーには、Mozilla, Cisco, Akamai などの大手団体、企業の社員が含まれているため、
ネットユーザは、このサービスに好意を持って使用し急速に利用が広がっています。
Let’s Encrypt 関連のパッケージをインストール
前は、Let’s Encrypt サイトの git レポジトリからツールをダウンロードして
インストールを行っていましたが、今は、CentOS のアドオンパッケージを公開している
Epel のツールがリリースされているので、それを利用する方が簡単です。
$ sudo yum -y install epel-release Nginx の場合 $ sudo yum -y install certbot python2-certbot-nginx Apache の場合 $ sudo yum -y install certbot python2-certbot-apache 合計 3.2 MB/s | 4.0 MB 00:00:01 file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 から鍵を取得中です。 Importing GPG key 0x352C64E5: Userid : "Fedora EPEL (7) <epel@fedoraproject.org>" Fingerprint: 91e9 7d7c 4a5e 96f1 7f3e 888f 6a2f aea2 352c 64e5 Package : epel-release-7-9.noarch (@extras) From : /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 上記の処理を行います。よろしいでしょうか? [y/N]y
SSL証明書のインストール
Nginx の場合 $ sudo certbot run --nginx -d www.example.com <- ドメイン名を入力 Apache の場合 $ sudo certbot run --apache -d www.example.com <- ドメイン名を入力 Saving debug log to /var/log/letsencrypt/letsencrypt.log Plugins selected: Authenticator nginx, Installer nginx Enter email address (used for urgent renewal and security notices) (Enter 'c' to cancel): taro@example.com <- メールアドレスを入力 Starting new HTTPS connection (1): acme-v01.api.letsencrypt.org ------------------------------------------------------------------------------- Please read the Terms of Service at https://letsencrypt.org/documents/LE-SA-v1.1.1-August-1-2016.pdf. You must agree in order to register with the ACME server at https://acme-v01.api.letsencrypt.org/directory ------------------------------------------------------------------------------- (A)gree/(C)ancel: a <- 同意します。 ------------------------------------------------------------------------------- Would you be willing to share your email address with the Electronic Frontier Foundation, a founding partner of the Let's Encrypt project and the non-profit organization that develops Certbot? We'd like to send you email about EFF and our work to encrypt the web, protect its users and defend digital rights. ------------------------------------------------------------------------------- (Y)es/(N)o: yes <- メールアドレスを入力 tarting new HTTPS connection (1): supporters.eff.org Obtaining a new certificate Performing the following challenges: tls-sni-01 challenge for www.example.com nginx: [error] invalid PID number "" in "/var/run/nginx.pid" Waiting for verification... Cleaning up challenges Deployed Certificate to VirtualHost /etc/nginx/conf.d/wordpress.conf for set(['www.example.com']) Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access. ------------------------------------------------------------------------------- 1: No redirect - Make no further changes to the webserver configuration. 2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for new sites, or if you're confident your site works on HTTPS. You can undo this change by editing your web server's configuration. ------------------------------------------------------------------------------- Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2 <- http のアクセスを https に変換するかの設定です
SSL証明書の更新
SSL証明書の期限は3ヶ月なので、定期的に更新が必要です。
以下のコマンドで更新が行えますが、
SSL証明書の更新 $ sudo certbot renew --force-renewal クーロンに登録 $ sudo crontab -e 30 05 1 * * certbot renew --force-renewal