Drupal 導入記(https への移行)
サーバー証明書の取得
サーバ証明書の取得のため、まず、server.key(秘密鍵)と server.csr(証明書発行リクエスト)の対を生成する。
$ cd /etc/pki/tls/certs # 証明書格納ディレクトリーに移動
$ sudo make server.key # 秘密鍵生成
$ sudo openssl rsa -in server.key -out www-jlc.key # pass phrase を削除
$ sudo openssl rsa -in server.key -out www-jlc.key # pass phrase を削除
$ sudo make www-jlc.csr # 証明書発行リクエスト生成
などとする。次に例えば、証明書発行所のページ:https://cspssl.jp に行き、www-jlc.csr を使って証明書を注文する。
すると、発行所から、サーバー確認のためのチケットが送られてくるので、それをサーバー上の指定の場所に置く。
すると、発行所から、サーバー確認のためのチケットが送られてくるので、それをサーバー上の指定の場所に置く。
$ cd ~/web/cert/20190618/dot.well-known/pki-validation
$ ls
571FE4C4DB229F483B453469E784397A.txt
$ sudo mkdir -p /hosts/www-jlc/home/htdocs/.well-known/pki-validation
$ sudo cp -p 571FE4C4DB229F483B453469E784397A.txt /hosts/www-jlc/home/htdocs/.well-known/pki-validation/
$ sudo chown -R rsyncer:rsyncer /hosts/www-jlc/home/htdocs/.well-known
$ ls
571FE4C4DB229F483B453469E784397A.txt
$ sudo mkdir -p /hosts/www-jlc/home/htdocs/.well-known/pki-validation
$ sudo cp -p 571FE4C4DB229F483B453469E784397A.txt /hosts/www-jlc/home/htdocs/.well-known/pki-validation/
$ sudo chown -R rsyncer:rsyncer /hosts/www-jlc/home/htdocs/.well-known
置かれたチケットを発行所から見ることができれば、サーバー確認成功となり、証明書、中間証明書が発行される。指定のウエッブページから、証明書と中間証明書をダウンロードし、所定の場所に置く。
$ mkdir -p ~/web/cert/20190618/cspssl
$ cd ~/web/cert/20190618/cspssl/
$ mv ~/server.crt.txt intermediate.crt.txt .
$ mv server.crt.txt www-jlc.crt
$ mv intermediate.crt.txt www-jlc.ca-bundle
$ sudo chown root:root www-jlc*
$ sudo chmod 400 www-jlc*
$ cd ~/web/cert/20190618/cspssl/
$ mv ~/server.crt.txt intermediate.crt.txt .
$ mv server.crt.txt www-jlc.crt
$ mv intermediate.crt.txt www-jlc.ca-bundle
$ sudo chown root:root www-jlc*
$ sudo chmod 400 www-jlc*
$ sudo cp -p www-jlc* /etc/pki/tls/certs/
$ cd /etc/pki/tls/certs
$ sudo chomod 400 www-jlc.key
$ sudo mv www-jlc.key ../private/
次に、appache の SSL 関連設定ファイルを編集する。
$ cd /etc/httpd/conf.d/
$ sudo vi ssl.conf
...
SSLCertificateFile /etc/pki/tls/certs/www-jlc.crt
...
SSLCertificateKeyFile /etc/pki/tls/private/www-jlc.key
...
SSLCertificateChainFile /etc/pki/tls/certs/www-jlc.ca-bundle
...
$ sudo vi www-jlc.conf
...
#
# 2019/06/18 K.Fujii ###########
...
<IfModule mod_rewrite.c>
$ sudo vi ssl.conf
...
SSLCertificateFile /etc/pki/tls/certs/www-jlc.crt
...
SSLCertificateKeyFile /etc/pki/tls/private/www-jlc.key
...
SSLCertificateChainFile /etc/pki/tls/certs/www-jlc.ca-bundle
...
$ sudo vi www-jlc.conf
...
#
# 2019/06/18 K.Fujii ###########
...
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{SERVER_ROOT} !^443$
RewriteRule ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
</IfModule>
...
<VirtualHost XXX.XX.XXX.XX:443>
...
# SSL
SSLEngine on
SSLCertificateFile /etc/pki/tls/certs/www-jlc.crt
SSLCertificateKeyFile /etc/pki/tls/private/www-jlc.key
SSLCertificateChainFile /etc/pki/tls/certs/www-jlc.ca-bundle
</VirtualHost>
################################
RewriteCond %{SERVER_ROOT} !^443$
RewriteRule ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
</IfModule>
...
<VirtualHost XXX.XX.XXX.XX:443>
...
# SSL
SSLEngine on
SSLCertificateFile /etc/pki/tls/certs/www-jlc.crt
SSLCertificateKeyFile /etc/pki/tls/private/www-jlc.key
SSLCertificateChainFile /etc/pki/tls/certs/www-jlc.ca-bundle
</VirtualHost>
################################
編集が終了したら、apache を再起動する。
$ sudo apachectl configtest
$ sudo apachectl restart
$ sudo apachectl restart
サーバー上で、https 接続のテスト。
$ openssl s_client -tls1_2 -connect www-jlc.kek.jp:443 -servername www-jlc.kek.jp
別のマシン、例えば MacBook Pro から接続確認を行う。
$ curl -s -v --tlsv1.2 https://www-jlc.kek.jp/
失敗したので、Firewall 管理者に 443 ポートを開けてもらう。無事、開通。