先週の金曜日,自室のサーバのSSL証明書の有効期限が切れてしまいました.
これまで某所で,1年間有効のものを購入していましたが…
そういえばだいぶ前に,学内手続きを通じて,この証明書を無料で発行してくれるというアナウンスがありました.さっそく申請しました.
情報
作成・取得するファイル
サーバ名をserverとします*1.
- server.keyは秘密鍵を含む情報で,最初に(申請前に)作成します.最終的にApacheの設定ファイルで指定します.
- server.csrは,server.keyをもとに作成します.csrはCertificate Signing Requestの略で,「証明書発行要求」という意味だそうです.
- server.tsvは,server.csrをもとに,上記TSVツールを用いて作成(抽出・配置)します.Tab Separated Valuesです.このファイルを,学内のしかるべきところに提出します.
- server.crtは,手続きが適正であれば,NIIが作成してくれます(こちらは,ダウンロードをします).Apacheの設定ファイルで指定します.crtは,CeRTificateの略で,サーバの正当性をクライアント側が確認するためのファイル(証明書),で合ってたっけ?
- nii-odca2.crtは中間CA証明書で,これもダウンロードします.Apacheの設定ファイルで指定します.
実行コマンド:申請まで
サーバ上で作業します.「$ 」は一般ユーザ,「# 」はrootのプロンプトです*2.
$ cd ~/tmp $ mkdir ssl-201105 $ chmod 700 ssl-201105 $ cd ssl-201105
上記マニュアルによると,乱数生成用のファイルが3ついるというので,作ります.最後のmd5sumコマンドは,相異なるのを手っ取り早く確認しただけです.
$ dd bs=200K count=1 if=/dev/urandom of=randfile1.txt $ dd bs=200K count=1 if=/dev/urandom of=randfile2.txt $ dd bs=200K count=1 if=/dev/urandom of=randfile3.txt $ md5sum randfile*
server.keyを作ります.パスフレーズ入力は1回だけなので,慎重にします*3.
$ openssl genrsa -des3 -rand randfile1.txt:randfile2.txt:randfile3.txt 2048 > server.key Enter pass phrase:
server.csrを作ります.パスフレーズを打ち込んでから,質問に答えていきます.いくつかはマニュアルに書かれているもの,いくつかは自分の所属などによるもの,いくつかは無記入を示す「.」です.Common Nameのところには,サーバのFQDNを書きます.
$ openssl req -new -key server.key -sha1 -out server.csr Enter pass phrase for server.key: You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]:JP State or Province Name (full name) [Some-State]:. Locality Name (eg, city) []:Academe2 Organization Name (eg, company) [Internet Widgits Pty Ltd]:Wakayama University Organizational Unit Name (eg, section) []:_____________ Common Name (eg, YOUR name) []:__________.wakayama-u.ac.jp Email Address []:. Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []:. An optional company name []:.
TSVファイルの発行のため,TSVツールのページを開きます.https://upki-portal.nii.ac.jp/docs/odcert/software/tsvtoolを参照しながら,server.csrをアップロードし,所定の項目に記入します.ここで指定する,自分のメールアドレスに,後日,メールが届きます.
issue-20110519.tsvという名前でダウンロードしました.まあ変更しておきましょう.
$ mv ~/issue-20110519.tsv server.tsv
そしてこのファイルをUSB stickに格納し,申請書類とともにシステム情報学センターの事務局に提出します.
実行コマンド:証明書取得とサーバ設定
数日後,「[UPKI-ODCert] Webサーバ証明書発行受付通知」と題するメールが来ました.
そこに書かれているURLから,__________.wakayama-u.ac.jp.cerをダウンロードします(1回限りです).server.crtに変更しておきます.
$ cd ~/tmp/ssl-201105 $ cp ~/__________.wakayama-u.ac.jp.cer server.crt
マニュアルによると,中間CA証明書もダウンロードする必要があります.
ブラウザでhttps://repo1.secomtrust.net/sppca/nii/odca2/を見まして…コマンドでいきましょう.
$ wget --no-check-certificate https://repo1.secomtrust.net/sppca/nii/odca2/nii-odca2.crt
--no-check-certificateオプションをつけて実行するのは,http://d.hatena.ne.jp/takehikom/20110509/1304891650で書いたとき以来です.
server.keyのパスフレーズを抜いておきます*4.抜く際,パスフレーズが要求されます.
$ mv server.key server.key_passwd $ openssl rsa -in server.key_passwd -out server.key Enter pass phrase for server.key_passwd:
いよいよ最終段階,Apacheで使うための設定です.rootになり,ファイルをコピーします.
$ sudo -i # cd /etc/apache2 # cp -a /home/________/tmp/ssl-201105 . # chmod 755 ssl-201105 # cd ssl-201105 # chmod 644 * # chmod 600 server.key*
設定です.
# vim /etc/apache2/sites-available/default-ssl
ファイルを読み進めていき,
SSLEngine on
の直後に
SSLCertificateFile /etc/apache2/ssl-201105/server.crt SSLCertificateKeyFile /etc/apache2/ssl-201105/server.key SSLCertificateChainFile /etc/apache2/ssl-201105/nii-odca2.crt
を書いてから,それまでの設定をコメントアウトします.vimですので,Esc Z Zで保存終了します.
Apacheの再起動をします.
# /etc/init.d/apache2 stop # /etc/init.d/apache2 start
動作確認
Firefoxで,httpsのアクセスをして,鍵マークをクリックして証明書を見ます.
発行者の組織はNational Institute of Informatics,有効な期間は2年1か月です.
それと別にこのサーバでは,研究で使用するファイルをSubversionで管理しています.httpsでアクセスできるよう,Apacheで設定しています.TortoiseSVNでSVN更新をしてみると,こんなポップアップが出ました.
ここからも,鍵の変更が確認できました.