CentOS7.3常時SSLはもはや現代の常識!?今を遡ること3年前、2014年のことになりますが、GoogleがSSL化されたサイトをサーチエンジンがポジティブに評価することを発表して以来、新しくWebサービスを作る場合にはSSL化することが必須タスクの一つになってきました。JAPANはサービス開始当時から常時SSL化の対応を行っていますが、2014年から運営している上場企業サーチ.comはユーザが情報を登録する機能を実装していないこともあり、これまでSSL対応が出来ていませんでした。従来、WebサイトのSSL化を実現するためには、認証局に対してお金を払ってサーバ証明書を発行してもらう必要がありました。このコストは最も安いものでも年間数千円必要であり、個人が格安のレンタルサーバで運営しているような小規模なWebサイトでは無視できないケースもあったのではないかと思います。))を作成する必要があり、若干のハードルがありますので、対応できずにいたWebサイト運営者もいたのではないかと思います。Encryptは通信の暗号化に特化した無料のSSL証明書発行サービスです。ドメインを認証するDV認証にしか対応しておらず、発行される証明書の有効期限が3ヶ月と短く定期的に更新手続きが必要にはなるものの、サーバのルート権限を持っている管理者であれば簡単な操作で署名済みの秘密鍵(KEY)と公開鍵(CRT)を入手することができます。今回、上場企業サーチ.comに導入しましたので、以下ではその手順を紹介します。OSはCentOS7.3になります。Encryptのインストール1.epelリポジトリを有効にしてcertbotをインストールします。certbot2.certbotのコマンドを実行してサーバ証明書を作成するpath-to-rootにはRailsアプリのルートディレクトリを指定します。xn--vckya7nx51ik9ay55a3l3a.com私は上記のコマンドを実行したところ、次のエラーが発生しました。address.エラーメッセージを見る限り、サーバ直下に作成される.well-knownディレクトリにインターネットからアクセスしようとして404エラーが出たことが問題のようです。EncryptはSSL化しようとしているサーバに作ったファイルに外部からアクセスできることをもって、実在性の確認を行っているようです。.well-knownはpublic外にあり、当然ながらルーティングも設定されていないため、設定上正しい動きとして404になります。今回、WebサーバにはH2Oを使っていますので、h2o.confに下記の末尾2行を追加してサービスを再起動します。https://eff.org/donate-le今度は上手くいきました。fullchain.pemが公開鍵、privkey.pemが秘密鍵になりますので、適切な場所に保管します。serverポート443の設定を追加します。certificate-fileとkey-fileには先ほど作成した公開鍵と秘密鍵のパスを指定します。cipher-suiteとcipher-preferenceはなくても動きますが、脆弱な暗号方式を使わないようにするための設定です。設定後、h2oサービスを再起動するとSSL通信が可能となります。今回は詳しくは触れませんが、上記まででSSL接続ができないときは、ファイヤーウォールでインバウンド443が空いているかを確認してください。それから、80ポート(HTTP)へのアクセスを443ポートにリダイレクトしておいた方が良いと思いますので、適宜この設定も追加してください。7.おまけ昔から慣れているので今でもSSLと言ってしまいますが、暗号化方式としてSSLは既に時代遅れと言われており、世の中的にはTLS通信に移行が進んでいます。上で書いた5.のcipher-suiteのところで、頭に"!"が付いているのはそのアルゴリズムを「許可しない」ことを意味するのですが、今回の設定ではSSLを軒並み拒否しています。冒頭で「常時SSLは世の中の常識!?」とまで書きましたが、正しくは「常時TLSは世の中の常識!?」ですね。月別アーカイブスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。