背景
- 業務で十数年前のシステムを移行した
- 今度同様の作業がある
- 作業記録を Qiita 向けに作成
/etc/httpd/conf.d/ssl.conf の編集
bash
vim /etc/httpd/conf.d/ssl.conf
ssl.conf
DocumentRoot "/vol/www/html/"
ServerName hogefoobar.jp
ErrorLog "|/usr/sbin/rotatelogs /var/log/httpd/error_log.%Y%m%d 86400 540"
CustomLog "|/usr/sbin/rotatelogs /var/log/httpd/access_log.%Y%m%d 86400 540" combinedi
Alias /foobar "/vol/www/html/foobar/
<Directory "/vol/www/html/foobar/publ
Options ExecCGI Indexes FollowSym
AllowOverride AuthConfig All
Require all granted
# AddHandler cgi-script .cgi
</Directory>
AddType application/x-httpd-php .php
# DL したサーバー証明書
SSLCertificateFile /etc/ssl/certs/server.crt
# 生成した秘密鍵
SSLCertificateKeyFile /etc/ssl/private/foobar.key
# DL した中間証明書
SSLCertificateChainFile /etc/pki/tls/certs/jprs_ca.crt
bash
systemctl restart httpd
http へのアクセスを https に流す
# vi /etc/httpd/conf.d/your-domain.conf
<VirtualHost *:80>
ServerName your-domain.com
Redirect permanent https://your-domain.com/
</VirtualHost>
SSL証明書および関連ファイルの適切な権限設定
これらの証明書ファイルは、一般的に公開情報であり、ウェブサーバーおよび関連プロセスが読み取る必要がある。
サーバー証明書 (/etc/ssl/certs/server.crt) と中間証明書 (/etc/pki/tls/certs/jprs_ca.crt)
Bash
sudo chown root:root /etc/ssl/certs/server.crt
sudo chmod 644 /etc/ssl/certs/server.crt
sudo chown root:root /etc/pki/tls/certs/jprs_ca.crt
sudo chmod 644 /etc/pki/tls/certs/jprs_ca.crt
秘密鍵 (/etc/ssl/private/foobar.key)
秘密鍵は機密情報であり、厳格に保護する必要がある。ウェブサーバーのみが読み取れるようにするのが一般的。
Bash
sudo chown root:root /etc/ssl/private/foobar.key
sudo chmod 600 /etc/ssl/private/foobar.key
ディレクトリの権限
Bash
sudo chmod 750 /etc/ssl/private
所有者は読み取り、書き込み、実行が可能であり、グループは読み取りと実行が可能になります。他のユーザーにはアクセスが制限される。
設定反映
bash
systemctl restart httpd
参考資料
学び
- .crt と .csr は違う
- crt は certificate = 証明書
- csr はSSLサーバー証明書を発行するための証明書署名要求 Certificate Signing Request
- File 生成した秘密鍵
- KeyFile 中間証明書
- ChainFile CA証明書
- httpdが起動しなくなったら、ログを追跡する
- 生成した秘密鍵とCSRで発行したサーバー証明書のペアを確認する
- 設定するパスが入れ違いになってないか確認する