ブログを常時SSL化する際に躓いた点

下記の記事を参考に。

CentOS6.5だったけど、やることはだいたい同じ。例に倣って、FujiSSLで2年(ファイル認証)を購入。

サーバで秘密鍵を作る。

以下サーバでの作業。

openssl version
cd /usr/bin/
./openssl md5 * > rand.dat

秘密鍵を生成

openssl genrsa -rand rand.dat -des3 2048 > 2018key.pem

パスフレーズ聞かれるので入力・メモしておくこと。

openssl req -new -key 2018key.pem -out 2018csr.pem
Country Name (2 letter code) [XX]:JP
State or Province Name (full name) []:Nagasaki
...いろいろ聞かれるので入力。

証明書の発行

FujiSSLの管理画面に入りアクティベートを行います。アクティベート申請を行うと今後の手順が書いてあるメールが添付ファイル付きで届きます。

指示通りに、添付ファイルをサーバに配置し、指定のURLで確認ができるようにしておく。2週間以内って書いてあったけど20分くらいで認証完了しました。

認証が完了したらさらにzipファイル付きのメールが届く。中身は

  • ca-bundle.ca (中間証明書)
  • README.txt
  • www.nyagosu.net.crt (証明書)

Apacheの設定。

サーバに戻り、SSL設定ファイルを編集。

vi /etc/httpd/conf.d/ssl.conf

それぞれ、

  • SSLCertificateFile /etc/pki/tls/certs/www.nyagosu.net.crt
  • SSLCertificateKeyFile /etc/pki/tls/private/2018key.pem
  • SSLCertificateChainFile /etc/pki/tls/certs/ca-bundle.crt ※拡張子をcrtに変更。

と修正して、適宜ファイルを配置。

/etc/pki/tls/cert.pem のシンボリックリンクがあるので
ca-bundle.crt に変更しておかないとダメ。

apacheを再起動

/etc/init.d/httpd restart

OKが出たら完了。ちなみにパスフレーズ聞かれるようになるので、先ほど指定したものを入力すること。

Gitのバージョンアップ。(必要な人だけ)

ここでGitで clonepull もできなくなっていることに気づく。

まずyumで入れたgitがめちゃくちゃ古かったのでバージョンアップする。

古いのを削除してから2.x系をビルド。

yum remove git
yum install gcc curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-ExtUtils-MakeMaker
wget https://www.kernel.org/pub/software/scm/git/git-2.2.0.tar.gz
tar -zxf git-2.2.0.tar.gz
cd git-2.2.0
make prefix=/usr/local all
make prefix=/usr/local install
git --version

「No such file or directory」と怒られたら、

hash -r

それでも、Gitは「SSL connect error」を吐く。下記を参考に解決。

決め手はこれ。無事、Gitも動くようになった。

yum update nss

httpでアクセスされたらhttpsへリダイレクトする設定。

下記を参考に。

.htaccess に以下のように記述。wwwありなしもこれで統一できる。

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]

あとは、URLをhttpsに変更し、Hugoでビルドしなおし。

正しく表示されるのを確認。私はGithubのWebHookでブログ公開作業をしているのでそちらのURLも変更しておいた。以上で、常時SSL化の完了。