CentOS6.10 + Apache2.2 環境でhttpsに対応したお話

Pocket
はてなブックマーク - CentOS6.10 + Apache2.2 環境でhttpsに対応したお話

Let’s Encryptを使ってサーバーをhttps対応しましたが、ほとんどがCentOS7向けの解説で、CentOS6向けの解説が少なかったので備忘録も兼ねて作業内容をお話します。

まずはLet’s Encryptをインストールする前処理になります。

mod_sslをインストールします。

# yum install mod_ssl
# /etc/init.d/httpd restart
# httpd -M | grep ssl

ssl_modulleがインストールできたことを確認できればOKです。

https用の対応したポートを解放します。

# vi /etc/sysconfig/iptables
-----------------------------------------------------
-A INPUT -p tcp --dport 443  -j ACCEPT
-----------------------------------------------------
# /etc/init.d/iptables restart

スキーム名をhttp → https と置き換えてサーバーにアクセスできればOKです。
今はまだ証明書をインストールしていないので、ブラウザによっては警告が出ますが気にしないで次の手順に移ってください。

Let’s Encryptを使用するにはPython2.7が必要なのでインストールします。

# yum install centos-release-scl-rh
# yum install python27
# vi /etc/profile.d/python27.sh
-----------------------------------------------------
#!/bin/bash

source /opt/rh/python27/enable
export X_SCLS="`scl enable python27 'echo $X_SCLS'`"
-----------------------------------------------------
# python --version

Python2.7がインストールされていればOKです。

Python以外にもパッケージのインストール及び更新が必要ですが、こちらはyumでインストールできます。

# yum update nss
# yum install gcc openssl-devel bzip2-devel
# yum update ca-certificates

pipもインストールしておきます。

# curl "https://bootstrap.pypa.io/get-pip.py" -o "get-pip.py"
# python2.7 get-pip.py

ここまでがインストールの準備で、ここからが本番です。

Certbotをインストールします。

# wget https://dl.eff.org/certbot-auto
# chmod a+x certbot-auto

Let’s Encrypyで証明書を取得します。

# ./certbot-auto certonly --webroot -w [ドキュメントルートのパス] -d [ドメイン名] --email [メールアドレス] --no-bootstrap

ここで入力したメールアドレスに証明書を有効化するための確認メールが届きますので、対応してください。

取得した証明書を使用するようApacheの設定を変更します。

# vi /etc/httpd/conf.d/ssl.conf
-------------------------------------------------------------
SSLCertificateFile /etc/letsencrypt/live/[ドメイン名]/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/[ドメイン名]/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/[ドメイン名]/chain.pem
-------------------------------------------------------------
# vi /etc/httpd/conf.d/vhost.conf
-------------------------------------------------------------
NameVirtualHost *:443
<Virtualhost *:443>
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/[ドメイン名]/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/[ドメイン名]/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/[ドメイン名]/chain.pem
-------------------------------------------------------------
# /etc/init.d/httpd restart

これでサーバーにhttps対応は完了です。
https経由でサーバーにアクセスしても、証明書の警告が出なくなっているはずです。

ここからは後処理です。

他のサイトからリンクが張られている場合など、httpでのリンクが残っているため、http経由のアクセスをhttps経由のアクセスにリダイレクトします。

# vi /etc/httpd/conf.d/vhost.conf
-------------------------------------------------------------
<Virtualhost *:80>
ServerName test.net
RewriteEngine on
RewriteCond %{HTTP_HOST} ^test\.net
RewriteRule ^/(.*)$ https://test.net/$1 [R=301,L]
</Virtualhost>
-------------------------------------------------------------
# /etc/init.d/httpd restart

また、Let’s Encryptの証明書は有効期限が3ヶ月なので、自動で更新するよう設定します。

# crontab -e
--------------------------------------------------------------
0 3 * * * root certbot-auto renew
--------------------------------------------------------------

以上でhttps対応は完了です。

参考にしたサイト
ネコでもわかる!さくらのVPS講座 様
Nedia BLOG 様
Mobiletest 様

Pocket
はてなブックマーク - CentOS6.10 + Apache2.2 環境でhttpsに対応したお話

スポンサーリンク

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください