無料SSLでサイト構築
現在、Let’s Encryptという認証局を使えば無料で常時SSL化したサイトが簡単に構築できます。今回はLet’s Encryptを使ってSSL化する方法を解説していきます。環境は「CentOS6 Apache+openssl」で行います。
Let’s Encryptとは
Let’s Encryptとは誰もが無料で利用できる自動化されたオープンな認証局です。認証局はアメリカ合衆国のカルフォルニア州の公益法人が運営しています。
Let’s Encryptの目的はインターネットを安全に通信を行うためのさまざまな障壁(経済面・技術面・教育面)を減らすことです。このような目的があるため、常時SSL化したサイトが簡単に構築できます。
自動証明書発行の仕組み
基本的に認証の流れは前回説明した記事の流れと同じですが、「Let’s Encrypt」ではその流れをすべて自動で行います。「certbot-auto」というツールでサーバはドメイン情報を送信し、認証局はドメインの存在や正常性を確認します。
その後、サーバはCSR送信し、認証局は証明書を発行します。サイト運営者は発行された証明書をサーバにインストールします。証明書のインストール以外は「certbot-auto」ツールがすべて自動で行います。
有料版SSLと無料SSLの違い
有料版SSLと無料SSLの違いは認証局の信用度の違いにあります。料金が高いものであれば認証局の審査が厳しく、その分サイトの信頼性が上がります。
クレジットカード情報などの重要な個人情報を取り扱う場合は、このような有料版を使うことでユーザーに安心感を与えることができます。しかし、SEOのためにSSL化する場合は機能にほぼ変わりがないため無料SSLで十分です。
セットアップ
では実際にセットアップしていきます。準備として「certbot-auto」のツールをダウンロードします。
curlコマンドを使ってツールをダウンロードします。
curl https://dl.eff.org/certbot-auto -o /usr/bin/certbot-auto
chmodコマンドでツールの実行権限を与えます。
chmod a+x /usr/bin/certbot-auto
「certbot-auto」のツールを使って依存しているパッケージをインストールします。
certbot-auto --os-packages-only --non-interactive
「certbot-auto」のツールを使って証明書を取得します。認証するサイトのドメイン名とドキュメントルートのパス、メールアドレスを入力します。メールアドレスは更新期限が近づいたときに通知されるメールアドレスを指定します。
#certbot-auto certonly --non-interactive --agree-tos --webroot -w ドキュメントルートのパス -d ドメイン名 --email メールアドレス #例 ドメインhogehoge.comの場合 certbot-auto certonly --non-interactive --agree-tos --webroot -w /var/www/vhosts/hogehoge.com/httpdocs -d www.hogehoge.com --email [email protected]
発行された証明書をインストールする前に、サーバの環境を整えます。
まずopensslがインストールされているか確認します。
rpm -qa | grep openssl-devel
インストールされていない場合はインストールします。
yum install openssl-devel
Apacheと連携するためにモジュールをインストールします。
yum install mod_ssl
これでサーバの環境が整いましたので、発行された証明書をインストールします。
Apacheの設定を追加します。
例:hogehoge.comの場合
コンフィグファイルを作成します。
vi /etc/https/conf.d/ssl.hogehoge.com.config
コンフィグファイルにサイト設定と証明書をインストールします。
<VirtualHost *:443> #サイト設定 ServerName www.hogehoge.com ServerAlias hogehoge.com DocumentRoot /var/www/vhosts/hogehoge.com/httpdocs ErrorLog /var/www/vhosts/hogehoge.com/logs/error_access_logs CustomLog /var/www/vhosts/hogehoge.com/logs/main-access_logs combined env=!no_log <Directory /var/www/vhosts/hogehoge.com/httpdocs> AllowOverride All </Directory> #SSL証明書のインストール SSLEngine on SSLCertificateFile /etc/letsencrypt/live/hogehoge.com/cert.pem SSLCertificateKeyFile /etc/letsencrypt/live/hogehoge.com/privkey.pem SSLCertificateChainFile /etc/letsencrypt/live/hogehoge.com/chain.pem </VirtualHost>
SSLのコンフィグファイルにバーチャルドメインの設定を追加します。
vi /etc/httpd/conf.d/ssl.conf
下記コードを追加します。
## ## SSL Virtual Host Context ## NameVirtualhost *:443
サーバに設定を反映させます。
service httpd resatart
「https://ドメイン名」にアクセスし、エラーが出ていないか確認します。
FireFoxでエラーが出る場合
中間証明書をダウンロードします。
wget https://letsencrypt.org/certs/lets-encrypt-x1-cross-signed.pem
ダウンロードしたファイルを証明書ディレクトリに移動します。
mv lets-encrypt-x1-cross-signed.pem /etc/letsencrypt/live/hogehoge.com/
コンフィグファイルに追加します。
vi /etc/https/conf.d/ssl.hogehoge.com.config
コンフィグファイルに下記を追加します。
SSLCertificateChainFile /etc/letsencrypt/live/hogehoge.com/lets-encrypt-x1-cross-signed.pem
httpsにリダイレクト
ドキュメントルートに「.htaccess」を作成し下記コードを追加します。
RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
自動更新
証明書が期限切れにならないように自動更新コードをCron(スケジューラー)に追加します。
cronファイルを開きます。
crontab -e
下記のコードを追加します。例では午前3時に更新するように設定しています。
MAILTO="" 0 3 * * * root certbot-auto renew --post-hook "/usr/sbin/apachectl graceful" > /dev/null 2>&1
これで完了です。
「クラウドテック」です。


- 97%がリモートのお仕事
- 週4日、週3日OKのお仕事多数
- 登録社数74万件業界トップクラス
- 2〜4週間程度でお仕事決定
