参考サイト
http://l-w-i.net/t/openssl/cert_001.txt
http://good-stream.com/goodstream/security/ca/index.html
http://l-w-i.net/t/openssl/cert_001.txt
http://good-stream.com/goodstream/security/ca/index.html
★ポイント
自前で認証局を立てる場合は、認証局側の作業とユーザー(サーバ管理者)側の作業をごっちゃにしないこと。
認証局側の作業をしているときは、「自分はベリサイン」と繰り返しつぶやきながらやる。
===認証局の証明書の作成(認証局側の作業)===
①opnessl.cnfの編集(2箇所)
コメントついてるのでコメントを外す(もしかしたらしなくてもいいのかも)
[ usr_cert ]
nsCertType = server ←ここ
[ v3_ca ]
nsCertType = sslCA, emailCA ←ここ
②作業用ディレクトリ作成
必須じゃないけどやっといたほうがよい。
mkdir /usr/local/openssl/hogeCA
③作業用ディレクトリに証明書作成スクリプトをコピー
これも必須じゃないけど、中身書き換えたりするからやっといたほうがよい。
cp -a /usr/local/openssl/misc/CA.sh /usr/local/openssl/hogeCA/
④証明書作成スクリプトの編集
最新のopensslを使いたかったので後から/usr/local/opensslにインストールした。でも、もともと入っていたやつを消したりするのは依存関係ありすぎて危険だったのでopensslにはPATHを通していない。ので後からインストールしたopensslを指定する。
あと、作業用ディレクトリの指定。
if [ -z "$OPENSSL" ]; then OPENSSL=/usr/local/openssl/bin/openssl; fi ←ここ
DAYS="-days 365" # 1 year
CADAYS="-days 1095" # 3 years
REQ="$OPENSSL req $SSLEAY_CONFIG"
CA="$OPENSSL ca $SSLEAY_CONFIG"
VERIFY="$OPENSSL verify"
X509="$OPENSSL x509"
CATOP=/usr/local/openssl/hogeCA ←ここ
CAKEY=./cakey.pem
CAREQ=./careq.pem
CACERT=./cacert.pem
⑤証明書作成
ここで再度、自分は認証局であることを意識する。
たとえば入力する組織は、後で行うサーバ証明書の発行時に指定する組織名と同じだとうまく動作しないらしいので
hogeCAとかCAであることをわかりやすくしておくのが吉。
./CA -newca
参考サイトを見ながらよしなに。
===サーバの秘密鍵とCSRの作成(サーバ側の作業)===
⑥作業用ディレクトリ作成
必須じゃないけどやっといたほうがよい。
mkdir /usr/local/openssl/hogeSV以後、サーバ側はここで作業。
⑦秘密鍵作成
/usr/local/openssl/bin/openssl genrsa -des3 -out hogeSV.key 1024
⑧パスフレーズなしの鍵の作成
7の鍵はapacheを起動する度にパスワードが必要になってうざいので、パスフレーズなし版の鍵を作る。
/usr/local/openssl/bin/openssl rsa -in hogeSV.key -out hogeSV.nopass.key
⑨CSRの作成
CSR(Certificate Signing Request)とは、サーバーID(署名されたサーバーの証明書)を得るためのファイルのことで、有償の証明機関(ベリサインとか)で証明してもらうためには、このCSRを送付すると参考サイトに書いてあった。なるほど。
で、ここで改めて、今自分はサーバ側なんだと強く意識する。
openssl req -new -key hogeSV.key -out csr.pem
なんだけど、ここで入力するorganizationNameはCAと同じにしておかないと以下のようなエラーがでる。ん?なんかよくわからん。⑤と矛盾してるな。。。
The organizationName field needed to be the same in the CA certificate (hogeCA) and the request (hoge)けど、そういうことなので同じにしておく。
===サーバーID(署名されたサーバーの証明書)の作成(認証局側の作業)===
⑩作業用ディレクトリに移動
cd /usr/local/openssl/hogeCA/
⑪CSRから、サーバーIDを作成
/usr/local/openssl/bin/openssl ca -in /usr/local/openssl/hogeSV/csr.pem -out server.cert
有料の証明機関(べリサイン社など)では、ユーザから送られてきたCSRでこの作業を行い、できたサーバーIDを申込者に返信します。とのこと。なるほど。
これで、SSLの材料がそろった。ので、次回でapacheの設定をすることにしよう。
コメントする