DTIのServersMan@VPSで無料サーバー証明書Let’s Encryptを使うには?

未分類

ブログのSSL化はSEO上有利と言われています。

しかも最近では、Let’s Encryptのように無料でサーバー証明書を導入できるサービスもある。

当ブログも早速、Let’s EncryptでSSLの準備を始めようとしたのですが、ServersMan@VPSにはインストールできない!

そこでServersMan@VPSにも使える、無料サーバー証明書のインストール方法を説明します。

  • 2018.02.18 Apacheの設定でRC4を無効化するように変更しました

当サイトのサーバーはカゴヤVPSに移行したため、Let’s Encryptのエージェントが動作するようになりました。

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を利用している方は参考にどうぞ。