よくわからないエンジニア

よく分からないエンジニアの日々の記録

よくわからないエンジニア

CentOS7 ソースインストールしたapacheにLet's Encryptの証明書を適用する

構築したwebサーバの管理画面をhttpsにしたかったので、Let's Encryptで証明書を発行しました。

目次

Let's Encryptの導入

epelを入れれば、yumで導入出来ます。楽です。

# yum install epel-release
# yum install certbot python-certbot-apache

導入はこれで完了です。

証明書の発行

自分の環境は既にapacheを起動しWebページが参照出来る状態なので、以下コマンドで証明書を発行しました。

# certbot certonly --agree-tos --webroot -w /mnt/nfs/sample.unknownengineer.net/htdocs/ -d sample.unknownengineer.net -m sample@gmail.com

成功すれば以下に証明書が作成されます。

# ls /etc/letsencrypt/live/sample.unknownengineer.net/
README  cert.pem  chain.pem  fullchain.pem  privkey.pem

apacheの設定

作成されたファイルをhttpd-ssl.confで指定します。

# vim /usr/local/apache2/conf/extra/httpd-ssl.conf
SSLCertificateFile "/etc/letsencrypt/live/sample.unknownengineer.net/cert.pem"
SSLCertificateKeyFile "/etc/letsencrypt/live/sample.unknownengineer.net/privkey.pem"
SSLCertificateChainFile  "/etc/letsencrypt/live/sample.unknownengineer.net/chain.pem"

apacheのrestart前にhttpd -tコマンドでエラーがないかを確認します。

# /usr/local/apache2/bin/httpd -t
AH00526: Syntax error on line 52 of /usr/local/apache-2.4.29/conf/extra/httpd-ssl.conf:
Invalid command 'SSLCipherSuite', perhaps misspelled or defined by a module not included in the server configuration

必要なモジュールが有効になっていません。mod_sslを有効にします。

# vim /usr/local/apache2/conf/httpd.conf
LoadModule ssl_module modules/mod_ssl.so ←コメントアウト解除

[root@web1 ~]# /usr/local/apache2/bin/httpd -t
AH00526: Syntax error on line 92 of /usr/local/apache-2.4.29/conf/extra/httpd-ssl.conf:
SSLSessionCache: 'shmcb' session cache not supported (known names: ). Maybe you need to load the appropriate socache module (mod_socache_shmcb?).

別のエラーが出ましたが、こちらも必要なモジュールを有効にしてあげます。

# vim /usr/local/apache2/conf/httpd.conf
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so ←コメントアウト解除

# /usr/local/apache2/bin/httpd -t
Syntax OK

エラーが消えてから、apacheをrestartすれば適用されていると思います。