さくらのVPSでCentOS7のサーバーを構築する 番外編…IPアドレスベースSSL
投稿日:2017年09月23日
最終更新日:
もくじ
-
番外編…IPアドレスベースSSL
- 下準備
- SSLサーバー証明書の発行申請作業
- SSLサーバー証明書の設置・設定
- 番外編…SNI SSL
- 番外編…Apache再起動時に秘密鍵のパスフレーズ入力をサボる方法
- 番外編…「Let’s Encrypt」を使ってSSL/TLSサーバー証明書を無料で取得する
下準備
ApacheでSSL通信を行うためには、「OpenSSL」と「mod_ssl」が必要です。OpenSSLはデフォルトでインストールされているので、mod_sslを入れます。 [VIM] sudo yum install mod_ssl [/VIM]
また、ファイアウォールでHTTPSの通信を許可する必要があります。 [VIM] sudo firewall-cmd –add-service=https –zone=public –permanent sudo firewall-cmd –reload [/VIM]
SSLサーバー証明書の発行申請作業
SSLを導入するためには、「SSLサーバー証明書」を用意する必要があります。SSLサーバー証明書は、
- 鍵ペア・CSR作成
- 認証局にCSRを送信して証明書の発行を申請
- (審査を通過すれば)証明書発行
- 証明書をサーバーに設置、SSL使用開始
CSRの作成
CSR(Certificate Signing Request・証明書署名要求)は、SSLサーバー証明書を発行する時に認証局に提出するものです。CSRには公開鍵とサイト運営者等の情報が記録されます。 [VIM] #sudo openssl req -new -key 秘密鍵のファイル名 -out CSRのファイル名 sudo openssl req -new -key hogehoge2017.key -out hogehoge2017.csr #設定した秘密鍵のパスフレーズを入力 Enter pass phrase for hogehoge2017.key: [/VIM] ここからCSR情報を入力していきます。基本的には半角英数です。 [VIM] #国名コードを入力(日本ならJP) Country Name (2 letter code) [XX]:JP #都道府県を入力(ローマ字で) State or Province Name (full name) []:Chiba #市区町村名(都道府県と同じでもとりあえずOK(個人レベルなら)) Locality Name (eg, city) [Default City]:Chiba #組織名・会社名(個人ならサイト名などを適当に入れとく) Organization Name (eg, company) [Default Company Ltd]:Koguma #(部門名 空欄でもOK) Organizational Unit Name (eg, section) []:ssl1 #サイトのドメイン名 最重要 Common Name (eg, your name or your server’s hostname) []:hogehoge.net #何も打ち込まずにEnter Email Address []: Please enter the following ‘extra’ attributes to be sent with your certificate request #何も打ち込まずにEnter A challenge password []: #何も打ち込まずにEnter An optional company name []: [/VIM] ここまで終われば、CSRの作成も完了です。後はSSLサーバー証明書の発行申請をする認証局の指示に従い、CSR情報を提出してください。 [VIM] #CSRファイルの中身を見るコマンド cat hogehoge2017.csr [/VIM]
個人でもSSLサーバー証明書の発行申請を行える業者もあるので、自分のWEBサイトをSSLに対応させたい場合はいろいろな業者を比較検討してみましょう。
- 格安SSL証明書サービス、SSLボックス
- さくらインターネット (SSL証明書も取り扱っています)
- ベリサインSSLサーバー証明書
SSLサーバー証明書の設置・設定
CSRをSSLサーバー証明書発行業者(認証局)に提出し、審査を通過すればSSLサーバー証明書が発行されます。審査と言っても、個人の場合はドメインの正当な使用権があることを確認するだけなのでそこまで厳しくはありません。私はさくらのSSLの「ラピッドSSL」でSSLサーバー証明書を発行してもらいましたが、その時は認証局から渡されたファイルをサーバーにアップロードするだけで審査が終了し、証明書が発行されました。
SSLサーバー証明書が発行されたら、これをサーバーに設置する作業を行います。使用するファイルは、
- SSLサーバー証明書(この中に公開鍵が入っている・認証局から渡される)
- 証明書と対になる秘密鍵(サーバーに配置済み)
- 中間CA証明書(認証局によっては必要・認証局から渡される)
証明書群の設置
まずは認証局から渡されたSSLサーバー証明書および中間CA証明書をアップロードしましょう。と言ってもファイルを丸ごとSFTP経由で送り込むのはパーミッションやSSHの設定の関係で厳しいかもしれないので、SSLサーバー証明書および中間CA証明書となるファイルをサーバー側で作成し、文字列をコピペすることで対応します。 [VIM] #SSLの鍵ファイルを保存するディレクトリに移動 cd /etc/httpd/conf/ssl/example.net #SSLサーバー証明書を作成 sudo vim hogehoge2017.crt #中間CA証明書を作成 sudo vim hogehoge2017.cer [/VIM] サーバー側で、SSLサーバー証明書のファイル名で新しいテキストファイルを作成しましょう。ファイルが開かれたら、認証局から渡されたSSLサーバー証明書(中身はただのテキストファイル)の文字列をまるごとコピペし、保存します。中間CA証明書も同様の手順で保存してください。
ファイルを開かずにファイル内の文字列をコピペする
編集画面にたどり着いたら、まずは「A」などのキーを押してVimを編集モードに切り替えましょう。そうしたら、文字列のコピペ元となるファイルをTera Termの画面にドラッグ・アンド・ドロップします。
こんな画面が出るので、「ファイル送信」を押します。
無事にテキストがコピーされたので、Vimで保存してください。なお、画像はSSH公開鍵アップロードの解説から流用しています。
設定ファイルの作成
設定ファイル自体はmod_sslインストール時に自動生成されるので、そちらを使ってもいいでしょう。このページでは設定ファイルを自分で作りますが、自動生成されたものと突き合わせれば十分対応できると思います。何はともあれ、設定ファイルを開きます。 [VIM] #自動生成される設定ファイルを無効化 sudo mv /etc/httpd/conf.d/ssl.conf /etc/httpd/conf.d/ssl.conf.old #設定ファイルを開く sudo vim /etc/httpd/conf.d/ssl.conf [/VIM]
設定ファイルは以下のようになります。
[VIM]
Listen 443 https
SSLPassPhraseDialog exec:/usr/libexec/httpd-ssl-pass-dialog
SSLSessionCache shmcb:/run/httpd/sslcache(512000)
SSLSessionCacheTimeout 300
SSLRandomSeed startup file:/dev/urandom 256
SSLRandomSeed connect builtin
#SSLRandomSeed startup file:/dev/random 512
#SSLRandomSeed connect file:/dev/random 512
#SSLRandomSeed connect file:/dev/urandom 512
SSLCryptoDevice builtin
#SSLCryptoDevice ubsec
#SSL2.0とSSL3.0は必ず無効化する
SSLProtocol all -SSLv2 -SSLv3
#PHPをCGIモードで動かしたい時、他のファイル(バーチャルホストの設定ファイル等)に
#php-cgi関係の設定がなければ記述する(あるなら書かない)
ScriptAlias /php-hoge /var/www/cgi-bin/hoge-cgi/php-cgi
Apache再起動
SSLサーバー証明書の配置、設定ファイルの作成が終わったら、Apacheを再起動します。 [VIM] #文法チェック sudo apachectl configtest #Apache再起動 sudo systemctl restart httpd #起動時にSSLサーバー証明書と対になる #秘密鍵のパスフレーズを入力する必要がある Enter SSL pass phrase for example.net:443 (RSA) : [/VIM]
無事に再起動できれば、設定完了です。ちなみに、SSL Server Test (Powered by Qualys SSL Labs)ではSSLの設定の安全性を確かめることができます。