まさか、無料でSSLが利用できるなんて!

ある日突然、Chrome の console に以下のような表示が出ていました。

The certificate used to load https://gameusers.org/app/pay uses an SSL certificate that will be distrusted in Chrome 66. Once distrusted, users will be prevented from loading this resource. See https://g.co/chrome/symantecpkicerts for more information.

Google 翻訳
https://gameusers.org/app/payをロードするために使用された証明書は、Chrome 66で信頼されないSSL証明書を使用します。一度信頼されないと、ユーザーはこのリソースを読み込むことができなくなります。詳細については、https://g.co/chrome/symantecpkicertsを参照してください。

 

調べてみたところ、過去に発行されたシマンテックの証明書に問題があるらしいです。Game Users で使っている Rapid SSL もダメとのこと。

シマンテックの証明書に対してGoogleからの制裁が確定した話

2018年3月15日までに証明書を新しいものに書き換えないといけないみたいです。Rapid SSL は他の高価な証明書に比べると格安で良かったのですが、どうせ更新するならと、他にも新しい発行業者が出ていないか調べてみました。すると「Let’s Encrypt 」という無料で利用できるとうたっているサービスを発見。さすがに無料は怪しいだろと思ったのですが、サイトを見てみるとこのように書かれています。

非営利団体の ISRG (Internet Security Research Group) が運営しており、シスコ(Cisco Systems)、Akamai、電子フロンティア財団(Electronic Frontier Foundation)、モジラ財団(Mozilla Foundation)などの大手企業・団体が、ISRG のスポンサーとして Let’s Encrypt を支援しています。

どこかで聞いたことのある名前ばかり。疑念が払拭されたので、これを利用してみよう、仮にまともに使えなかったとしても無料だし、試してみる分には問題ないだろうということで、VPS (Cent OS6) で利用してみました。

 

使い方はここにすべて書いてあります。

 

  • EPEL リポジトリを有効にする
yum install epel-release
  • certbot-auto を拾ってきて実行
wget https://dl.eff.org/certbot-auto
chmod a+x certbot-auto
./certbot-auto

以下、certbot 実行時の黒い画面の文字、Google の翻訳も英文の下に載せておきます。

Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel): メールアドレスを入力
/opt/eff.org/certbot/venv/lib/python2.6/site-packages/acme/jose/jwa.py:110: DeprecationWarning: signer and verifier have been deprecated. Please use sign and verify instead.
  signer = key.signer(self.padding, self.hash)

電子メールアドレスを入力してください(緊急更新およびセキュリティ通知に使用されます)( 'c'を
キャンセル):メールアドレスを入力
/opt/eff.org/certbot/venv/lib/python2.6/site-packages/acme/jose/jwa.py:110:DeprecationWarning:署名者と検証者は廃止されました。代わりに標識を使用して確認してください。
  署名者= key.signer(self.padding、self.hash)


-------------------------------------------------------------------------------
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

利用規約をご覧ください
https://letsencrypt.org/documents/LE-SA-v1.1.1-August-1-2016.pdf。同意する必要があります
ACMEサーバーに登録するには
https://acme-v01.api.letsencrypt.org/directory
-------------------------------------------------------------------------------
(A)gree/(C)ancel: A(Agree / 同意します)

-------------------------------------------------------------------------------
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.

あなたは電子フロンティアとあなたの電子メールアドレスを共有したいですか?
財団は、Let's Encryptプロジェクトの創設パートナーであり、非営利団体でもあります。
Certbotを開発する組織ですか? EFFについてのメールをお送りしたいと思います
ウェブを暗号化し、ユーザーを保護し、デジタル権利を守るための私たちの仕事。
-------------------------------------------------------------------------------
(Y)es/(N)o: Y(Yes / はいを選択)


Which names would you like to activate HTTPS for?
HTTPSをどの名前で有効にしますか?
-------------------------------------------------------------------------------
1: gameusers.org
2: www.gameusers.org
-------------------------------------------------------------------------------
Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter 'c' to cancel):
1(gameusers.org は www を利用していないので1を選択)

Obtaining a new certificate
Performing the following challenges:
tls-sni-01 challenge for gameusers.org
Waiting for verification...
Cleaning up challenges
Deploying Certificate for gameusers.org to VirtualHost /etc/httpd/conf.d/ssl.conf


Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
HTTPトラフィックをHTTPSにリダイレクトするかどうかを選択し、HTTPアクセスを削除してください。
-------------------------------------------------------------------------------
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.

1:リダイレクトしない - ウェブサーバーの設定をこれ以上変更しないでください。
2:リダイレクト -  HTTPSアクセスを保護するためにすべての要求をリダイレクトします。これを選択してください
新しいサイト、またはあなたのサイトがHTTPSで動作することを確信している場合。これを元に戻すことができます
Webサーバーの構成を編集して変更します。
-------------------------------------------------------------------------------
Select the appropriate number [1-2] then [enter] (press 'c' to cancel):
2(リダイレクトする設定を選択したら失敗しましたと出ました。
すでに .htaccess で http へのアクセスを
すべて https に飛ばしているので
この設定は必要なかったのかもしれません)

Failed redirect for gameusers.org
Unable to set enhancement redirect for gameusers.org
Unable to find corresponding HTTP vhost; Unable to create one as intended addresses conflict; Current configuration does not support automated redirection

gameusers.orgのリダイレクトに失敗しました
gameusers.orgのエンハンスメントリダイレクトを設定できません
対応するHTTP仮想ホストを見つけることができません。意図したアドレスが競合しているため作成できません。現在の設定では、自動リダイレクトはサポートされていません


IMPORTANT NOTES:
 - We were unable to set up enhancement redirect for your server,
   however, we successfully installed your certificate.
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/gameusers.org/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/gameusers.org/privkey.pem
   Your cert will expire on 2018-02-07. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot-auto
   again with the "certonly" option. To non-interactively renew *all*
   of your certificates, run "certbot-auto renew"
 - Your account credentials have been saved in your Certbot
   configuration directory at /etc/letsencrypt. You should make a
   secure backup of this folder now. This configuration directory will
   also contain certificates and private keys obtained by Certbot so
   making regular backups of this folder is ideal.

- サーバーの拡張リダイレクトを設定できませんでした。
   ただし、証明書を正常にインストールしました。
  - おめでとう!証明書とチェーンは以下の場所に保存されています:
   /etc/letsencrypt/live/gameusers.org/fullchain.pem
   あなたのキーファイルは以下の場所に保存されています:
   /etc/letsencrypt/live/gameusers.org/privkey.pem
   あなたの証明書は2018-02-07に期限切れとなります。新しい、または微調整された
   将来この証明書のバージョンを取得するには、certbot-autoを実行するだけです
   もう一度、 "certonly"オプションを使用してください。 *対話的に更新する* all *
   証明書の "certbot-auto renew"を実行してください
  - アカウント情報がCertbotに保存されている
   / etc / letsencryptの設定ディレクトリ。あなたは
   このフォルダの安全なバックアップを作成します。この設定ディレクトリは、
   Certbotで取得した証明書と秘密鍵も含まれています。
   このフォルダを定期的にバックアップするのが理想的です。

この間、わずか10分ほどです。なんとこれだけで SSL の設定が完了しました。英語ですが数問の対話に答えるだけでウェブサイトへの SSL 導入が完了します。あとは httpd を再起動するだけで反映されます。

service httpd start

 

数年前、初めて SSL を導入したときは中間証明書だなんだと難しい処理をした覚えがありますが、今回はたったこれだけで終了。しかも無料! 証明書の期限が三ヶ月しかないという問題はありますが、これは cron で更新すればいいだけなので、実質なにもしなくても無料で SSL がずっと利用できることになります。

証明書

ちなみに証明書を更新する方法は以下のような感じです。毎日、朝の6時45分に証明書の更新を実行する。更新できた場合は httpd も再起動する。毎日、実行していても、期限の30日前にならないと証明書の更新処理は実行されないので、向こうのサーバーに負荷をかけることもないとのことです。

45 6 * * * /root/certbot-auto renew --post-hook "service httpd restart"

正直、cron を触ることはあまりないので、こっちの設定の方が時間かかりました。この書き方が正しいのか更新されるまでわからないので、cron の部分についてはあまり参考にしないでください。

それにしても Let’s Encrypt すごすぎる!

 

参考サイト

コメントを残す

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)