ブログのSSL化はSEO上有利と言われています。
しかも最近では、Let’s Encryptのように無料でサーバー証明書を導入できるサービスもある。
当ブログも早速、Let’s EncryptでSSLの準備を始めようとしたのですが、ServersMan@VPSにはインストールできない!
そこでServersMan@VPSにも使える、無料サーバー証明書のインストール方法を説明します。
- 2018.02.18 Apacheの設定でRC4を無効化するように変更しました
Let’s Encryptのエージェントがインストールできない
Let’s Encryptは、エージェントというサーバー常駐型のサービスをインストールして使います。
エージェントをインストールすることで、サーバー証明書の発行から、サーバー証明書の自動更新までやってくれる便利なもの。
当ブログサーバーでも使ってみたかったのですが、残念ながらエージェントのインストール途中でエラーになりました。
# yum install certbot python-certbot-apache
(中略)
--> 衝突を処理しています: libselinux-2.5-11.el7.x86_64 は systemd < 219-20 と衝突しています
--> 衝突を処理しています: systemd-219-42.el7_4.1.x86_64 は initscripts < 9.49.28-1 と衝突しています
--> 依存性解決を終了しました。
エラー: systemd conflicts with initscripts-9.49.17-1.el7_0.1.x86_64
問題を回避するために --skip-broken を用いることができます。
これらを試行できます: rpm -Va --nofiles --nodigest
当ブログはServersMan@VPSで運営していて、OSはCentOS 7.0。
が、無理やりinitscriptsを更新すると、最悪サーバーが起動しなくなるとのこと。
そもそも、サーバー証明書の発行ってopensslがあればできてしまうのに、なぜそこまで複雑な仕組みが必要なのか・・・?
そういう疑問はもちつつ、とにかく欲しいのはサーバー証明書のファイルだけなので、Let’s Encryptは諦めることに。
ZeroSSLならエージェントのインストール不要!
そこで見つけたのがZeroSSL。
これもLet’s Encryptを利用したサービスなので無料です。
しかもインストールが不要で、webから申し込むだけでサーバー証明書が手に入ります。
Let’s Encryptのインストールができなかった人にはうってつけですね。
便利な世の中になったものです。
ZeroSSLを使ったサーバー証明書の手順については以下の記事を参考にしてください。
ApacheのSSL化とサーバー証明書のインストール
サーバー証明書が発行できれば、あとは特別な手順はありません。
サーバー証明書の配置
ZeroSSLで発行したサーバー証明書と秘密鍵をサーバーに配置します。
このサーバーでは複数ドメイン管理しているので、サーバー証明書のファイル名は[ドメイン名].crt、秘密鍵のファイル名は[ドメイン名].keyにしておきます。
種類 | ファイルパス |
---|---|
サーバー証明書 | /etc/pki/tls/certs/egatech.net.crt |
秘密鍵 | /etc/pki/tls/private/egatech.net.key |
秘密鍵のオーナーと権限を変更しておきます。
# chown root:root /etc/pki/tls/private/egatech.net.key
# chmod 600 /etc/pki/tls/private/egatech.net.key
Apache設定変更
Apacheの設定を変更し、443ポートを処理する<VirtualHost>セクションを追加します。
<VirtualHost *:443>
ServerName egatech.net
DocumentRoot /var/www/egatech.net
ErrorLog logs/ssl_error_log
CustomLog logs/ssl_access_log combined
SSLEngine on
SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5:!SEED:!IDEA:!RC4
SSLCertificateFile /etc/pki/tls/certs/egatech.net.crt
SSLCertificateKeyFile /etc/pki/tls/private/egatech.net.key
</VirtualHost>
apachectl configtestで設定確認ができたら、systemctl restart httpdコマンドで再起動します。
SSLポートを開放
iptablesで443ポートも開放するようにします。
# iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT
httpsプロトコルでサイトにアクセスできることを確認したら、iptables設定を保存します。
# iptables-save
まとめ
この後、HTTP/HTTPSのどちらでもアクセスできるようにして運用した後、HTTPSのみに切り替えました。
紆余曲折あったけど、ブログのSSL化ができてよかった。
ServerMan@VPSを利用している方は参考にどうぞ。