はい、私はバカです。基本的に孤独に頑張ってるアフィリエイターのため、「わからない時に人に聞く」ということができません。なのでなかなか技術が向上しないのです。
そんな私が丸一日頑張って、さくらVPSにSSL通信を導入しましたので書いときます。
私と同レベルのバカな人はかなり居ると思うのできっと役に立つでしょう。
なお、ここで言う「バカ」とは技術者として最下級戦士だということです。「最近やっとFTP覚えました~」とかって人の場合はSSL導入はたぶんムリでしょう。まあ、そーゆー人はVPSなんか使わないだろうけど。
ともかく、この記事読んで意味がわからない人とか、失敗した人はVPSへのSSL導入は諦めたほうが良いでしょう。そーゆー人はクラウドワークスとかで外注したほうがいいです。たぶん2万円か3万円くらい払えばやってもらえるでしょう。たぶんね。SSL通信はSEOで微妙に有利になるって話なので、稼いでる金額によっては頼む価値がある場合もあるでしょう。
経緯
そんでね、SSLの証明書の安いやつってのは申し込みドメインのメールアドレスにメールで送られてくるところが多いんですよ。でも、最下級戦士としては自分のドメインでメールサーバ立ち上げるってのはハードル高いじゃないですか。がんばりゃできると思うけど、先々までそのメールサーバ運用なんてやりたくない。面倒見たくない。なのでメールサーバ立てたくない。
そんな私の味方になってくれたのがRapidSSL。ココは、SSL通信させたいドメインと全く関係ないドメインのメールアドレスでもSSL証明書を送ってくれます。
でも当然、それなりのサーバの存在証明をしなきゃならんわけですけど、ソコは自分のサーバに指定のhtmlファイルをアップロードすることでやっちゃってくれます。最下級戦士の味方ですな。
手順
じゃ、手順を書きます。なお、Webサーバとしての基本的な設定は済んでいる前提です。
ドットインストールのさくらVPS入門で案内されてるような設定が終わってることを想定してます。
なお、証明書の料金は年間2600円4300円です。なので導入失敗したら2600円4300円損することになります。しかも、お試しとかはないし、インストールに失敗したかどうかは支払いが終わってからじゃないとわかりません。さあ、あなたは2600円4300円を賭ける勇気があるか!!!
2015.05.04追記:この記事書いた後2600円から4300円に値上がりした模様。
まず、下記サイトで色々書いて文字列を生成させます。なお、「共通入力項目」はWhoisの情報と正確に一致している必要があるので注意。こことかでWhoisを表示させてコピペするといいと思う。
Rapid-SSL.jp 秘密鍵&CSR(証明書署名要求)作成ツール2048ビット対応版
そんで、SSL サーバ証明書 RapidSSLお申込フォームに色々入力。「CSRの貼り付け」のとこにはさっき生成させた文字列の「CSR」の「—–BEGIN CERTIFICATE REQUEST—–」と「—–END CERTIFICATE REQUEST—–」を削除した文字列をコピペします。
こっからはVPSのコマンドラインで操作。
yum -y install mod_ssl
これを打つと、なんかズラズラ出てきてなにやらインストールされます。
終わったら下記3コマンドを打ちます。
cd /etc/httpd/conf
mkdir ssl
cd ssl
そんで下記コマンドでserver.keyの編集画面へ。もちろん、ローカルで作成してFTPしてもいいですよ。
vim server.key
ここには、最初にブラウザ上で生成した「秘密鍵」の「—–BEGIN RSA PRIVATE KEY—–」と「—–END RSA PRIVATE KEY—–」の間の文字列をコピペして保存。
さらに下記コマンドでserver.csrの編集画面へ。もちろん、ローカルで作成してFTPしてもいいですよ。
vim server.csr
で、編集画面でさっきブラウザ上にコピペした「CSR」の文字列と同じものをコピペして保存。
さらに下記コマンドでserver.crtの編集画面へ。もちろん、ローカルで作成してFTPしてもいいですよ。
vim server.crt
ここには、メールで送られてきた「SSLサーバ証明書(X.509形式)」ってやつの「—–BEGIN CERTIFICATE—–」と「—–END CERTIFICATE—–」の間の文字列をコピペして保存。
さらに下記コマンドでrapidssl-chain.crtの編集画面へ。もちろん、ローカルで作成してFTPしてもいいですよ。
vim rapidssl-chain.crt
ここには、メールで送られてきた「中間証明書(INTERMEDIATE CA):」ってやつの「—–BEGIN CERTIFICATE—–」と「—–END CERTIFICATE—–」の間の文字列をコピペして保存。
そして下記コマンドを打つ。で、最初にブラウザ上で入力したパスワードを打つ。なお、申し込み時にプラウザ上でパスワードをブランクにした場合は、このコマンドは打たなくていい。
openssl rsa -in server.key -out server.key
さらに下記コマンドでssl.confの編集画面へ。
vim /etc/httpd/conf.d/ssl.conf
以下、検索を多用する。vim内での検索は「/」を打った後検索したい文字列を打ってEnterなので使うと良い。
まず、「DocumentRoot」を探してコメントアウトを外す。例えば下記のように。
DocumentRoot “/var/www/html” #コメントアウトを解除する
なお、「DocumentRoot」の名の通り、ここはドメインに対するサーバ内のドキュメントルートを設定するところだ。なので、バーチャルホストを使っている場合は変更する必要がある。例えば、下記のように。
DocumentRoot “/var/www/www.example.com/public_html/” #コメントアウトを解除する
「ServerName」を探してコメントアウトを外すとともにドメイン名を修正する。
ServerName www.example.com:443 #コメントアウトを解除するとともにドメイン名をSSL導入対象のものに修正する
「SSLCertificateFile」を探す。たぶん「SSLCertificateFile」に続くファイルパスが違ってるので修正。下記のように。
SSLCertificateFile /etc/httpd/conf/ssl/server.crt #たぶん「SSLCertificateFile」に続くファイルパスが違ってるので修正
「SSLCertificateKeyFile」を探す。たぶん「SSLCertificateKeyFile」に続くファイルパスが違ってるので修正。下記のように。
SSLCertificateKeyFile /etc/httpd/conf/ssl/server.key #たぶん「SSLCertificateKeyFile」に続くファイルパスが違ってるので修正
「SSLCertificateChainFile」を探す。たぶんコメントアウトされてるのでそれを解除する。さらに「SSLCertificateChainFile」に続くファイルパスが違ってるので修正。
SSLCertificateChainFile /etc/httpd/conf/ssl/rapidssl-chain.crt #たぶんコメントアウトされてるのでそれを解除する。さらに「SSLCertificateChainFile」に続くファイルパスが違ってるので修正
最後に、「【重要】[Rapid-SSL] ファイル承認手順について」ってメールに書いてあるhtmファイルを指定ファイル名でアップロードする。こんな感じに書いてある。
そんでapache再起動でフィニッシュ!!どりゃあ!!!!!
/etc/rc.d/init.d/httpd restart
そんで念のため30分くらい待つ。
そしたらhttpsでアクセスしてみよう。できたらハイパーオッケー!!
以上。みんながんばってね。
失敗したらクラウドワークスとかでの外注も考えてみてね。