SSL」カテゴリーアーカイブ

Let’s Encryptの導入(Apache2.4+CentOS7)

当サイトですが、KingSSLからLet’s Encryptに変更しました。
KingSSLを導入した時の記事はConoHaVPSで動いているWordPressをSSL化しました。をご参照ください。

理由は値段が無料というのと、そこまで更新もしないので..という事情です(更新しろよ!)。

導入についてはめちゃめちゃ簡単なので手順について以下に記載しておきます。

Certbotクライアントのインストール

EPELリポジトリからインストールが可能です、epelリポジトリをインストールした上でyumインストールで取得ができます。

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

SSL証明書の作成

以下のように作成をします。

# certbot certonly --webroot -w /hogehoge/fugafuga/yoda56.com/ -d yoda56.com

-wオプションの後にはドキュメントルートのパス(Apacheに設定しているパスです)
-dオプションの後にはドメイン名を入力します。

対話式で進んでいきます
e-mailアドレスの入力を求められます。

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator webroot, Installer None
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel): メールアドレスを入力

規約に同意するか聞かれます、Aで次に進みます。

Starting new HTTPS connection (1): acme-v01.api.letsencrypt.org

-------------------------------------------------------------------------------
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v01.api.letsencrypt.org/directory
-------------------------------------------------------------------------------
(A)gree/(C)ancel: A

メールアドレスを共有するか聞かれます(Electronic Frontier Foundation)というとこに共有されるそうです。
共有をされたくないのでNで次へ

-------------------------------------------------------------------------------
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about EFF and
our work to encrypt the web, protect its users and defend digital rights.
-------------------------------------------------------------------------------
(Y)es/(N)o: N

下のようなメッセージが出れば作成完了です。

Obtaining a new certificate
Performing the following challenges:
http-01 challenge for yoda56.com
Using the webroot path /hogehoge/fugafuga/yoda56.com for all unmatched domains.
Waiting for verification...
Cleaning up challenges

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/yoda56.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/yoda56.com/privkey.pem
   Your cert will expire on 2018-04-01. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot
   again. To non-interactively renew *all* of your certificates, run
   "certbot renew"
 - Your account credentials have been saved in your Certbot
   configuration directory at /etc/letsencrypt. You should make a
   secure backup of this folder now. This configuration directory will
   also contain certificates and private keys obtained by Certbot so
   making regular backups of this folder is ideal.
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

作成された証明書について

以下に作成されています。

# ls -la /etc/letsencrypt/live/yoda56.com/
合計 12
drwxr-xr-x 2 root root 4096  1月  1 19:56 .
drwx------ 4 root root 4096  1月  1 19:56 ..
-rw-r--r-- 1 root root  543  1月  1 19:56 README
lrwxrwxrwx 1 root root   34  1月  1 19:56 cert.pem -> ../../archive/yoda56.com/cert1.pem
lrwxrwxrwx 1 root root   35  1月  1 19:56 chain.pem -> ../../archive/yoda56.com/chain1.pem
lrwxrwxrwx 1 root root   39  1月  1 19:56 fullchain.pem -> ../../archive/yoda56.com/fullchain1.pem
lrwxrwxrwx 1 root root   37  1月  1 19:56 privkey.pem -> ../../archive/yoda56.com/privkey1.pem

Apache2.4への設定

httpできたらhttpsでリダイレクトしつつ設定を加えます。

<virtualHost *:80>
    ServerName yoda56.com
    ServerAlias www.yoda56.com
   <IfModule mod_rewrite.c>
       RewriteEngine on
       RewriteCond %{HTTPS} off
       RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
   </IfModule>
</VirtualHost>

<virtualHost *:443>
    ServerName yoda56.com
    ServerAlias www.yoda56.com
    DocumentRoot /hogehoge/fugafuga/yoda56.com
    AllowEncodedSlashes On

    // SSL証明書を以下のように設定
    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/yoda56.com/cert.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/yoda56.com/privkey.pem
    SSLCertificateChainFile /etc/letsencrypt/live/yoda56.com/chain.pem

    <Directory /hogehoge/fugafuga/yoda56.com>
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

こんな感じでApacheに再起動をかけると良い感じになります。

cronで自動更新設定を行う

Let’s Encryptは3か月で証明書の有効期限が切れてしまうので更新をかける必要性があります。
一般的に更新が可能になるのは有効期限の30日前らしく、毎日更新のコマンドを回す分には問題なさそうなので、cronにセットしちゃいます。

# 毎週日曜の2時1分に更新コマンドを実行
02 01 *  *  0 root certbot renew --quiet

まだ更新日がきていないので、上手くいくかわかりませんが、静観していきたいと思います。

こんな感じで簡単に証明書の導入ができました。
検索順位の影響も出てくるので、とりあえず証明書を入れたいという方はおすすめです。

レンタルサーバなどでは、無料で導入してくれるサービスもあると思うので、チェックしてみてください。

では、2018年もよろしくお願いいたします。

【広告】

ConoHaVPSで動いているWordPressをSSL化しました。

表題の通りです。

見ている人はいないんだろうけど、やってみました。

SSLについて

以下のサイトが分かりやすく説明しています。
https://www.sslcerts.jp/
送信データを暗号化することで、通信の安全性を高めることができます。
GoogleChromeやFirefoxなどでは、URLの横にアイコンが付き、Webサイトが安全に通信できるかどうか判定をしてくれています。
今後Webサイト等を立ち上げる時はこのSSL化が必須となってくるのではないでしょうか。

SSL化してみよう

SSL化までの手順をうろ覚えですが書いていきます。
なお、自分はVPSで立ち上げているのですが、レンタルサーバを提供しているサイト等では共有のSSLも提供しているところが増えてきていますので、安価で済ませたければそちらを利用するのも手でしょう。
自分は勉強がてらにやりたかったので、買って実装しました。

環境について

・ConoHa VPS
・CentOS7.3
・Apache 2.4.6

必要なものをインストール

opensslとmod_sslが必要なので、入っていなければインストールします。

# yum install openssl
# yum install mod_ssl

秘密鍵、CSR、証明書を作成する

各種ディレクトリの作成

# cd /etc/httpd/conf/
# mkdir ssl.key
# mkdir ssl.csr
# mkdir ssl.crt

秘密鍵を生成

今後更新することを想定して、既存ファイルを上書きしないように名前は「ドメイン.作成年」とかで作るといいかもです。

# cd ssl.key
# openssl genrsa -des3 -out ./yoda56.com.2017.key 2048

※yoda56.comは自分のドメインに置き換えてください。
作成時にパスワードを入力します、今後結構使うので忘れないようにしてください。

CSR作成

CSRってなんだろうと思ったんだけどここに飛ばされた
企業の社会的責任
なんか違うよなぁ!?

こうらしい

■CSRとは、ドメイン所有者が認証局に提出する署名リクエスト(Certificate Signing Request)です。

じゃ、作ります

# cd ../
# pwd
/etc/httpd/conf
# openssl req -new -key ./ssl.key/yoda56.com.2017.key -out ./ssl.csr/yoda56.com.2017.csr

パスワード入力後は項目入力を求められます。
自分はよくわからなかったので、SSLを購入しようとしているKingSSLのこちらの例をそのまま入れました。

入力が終わるとファイルが作成されています。
中身をcatかなんかで見て全部コピーしましょう、SSL購入の際に必要になります。

#cat /etc/httpd/conf/ssl.csr/yoda56.com.2017.csr

よだ、SSL証明書を買う

自分は安さだけを求めたのでKingSSLにて購入しました。
年額900円ですので、とりあえず導入してみたいという方は良いのではないでしょうか?

証明書をサーバに入れる

手順を終えるとサーバ証明書が届きます。
これをサーバに入れます。

# cd /etc/httpd/conf/ssl.crt/
# touch yoda56.com.2017.crt ←これに証明書を入れる
# touch intermediate.cer ←これに中間証明書を入れる

Apacheの設定

ssl.conf

# cd /etc/httpd/conf.d/
# cp -vp ssl.conf ssl.conf.org
# vi ssl.conf

で括ってある場所全部削除しちゃってください。

vHosts.conf

Mozilla SSL Configuration GeneratorというサイトがopensslとApacheのバージョンに合わせてSSLの適当な書き方を作成してくれます、これを活用しましょう。

<VirtualHost *:443>
   いつも通りしている設定
   ↓追記
   SSLEngine on
    SSLCertificateChainFile /etc/httpd/conf/ssl.crt/intermediate.cer
    SSLCertificateFile      /etc/httpd/conf/ssl.crt/yoda56.com.2017.crt
    SSLCertificateKeyFile   /etc/httpd/conf/ssl.key/yoda56.com.2017.key

    SSLProtocol             all -SSLv3
    SSLCipherSuite          ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS
    SSLHonorCipherOrder     on
    SSLCompression          off
    ↑追記
</VirtualHost>

リダイレクト設定

あとはhttpリクエストしてきた時にhttpsでリダイレクトするようにApacheで設定を入れます

<virtualHost *:80>
   ServerName yoda56.com
   ServerAlias www.yoda56.com
   <IfModule mod_rewrite.c>
       RewriteEngine on
       RewriteCond %{HTTPS} off
       RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
   </IfModule>
</VirtualHost>

Apache再起動

# httpd -t
Syntax OK
# service httpd restart
↑ここでパスワードを求められます。

httpsでアクセスして表示され、httpでアクセスされたときにhttpsにてリダイレクトされれば設定完了です。

SSLの強度を見てくれるサイトがあるみたいなので、こちらでチェックしてみるといいかもです。
SSL Server Test (Powered by Qualys SSL Labs)

ではでは

■参考
SSL証明書をインストールする(自分でやればこんなに激安!)
http から https へのリダイレクトを行う httpd.conf (mod_rewrite)

【広告】