自前で認証局を立てて、オレオレ証明書でApacheでSSL

| | コメント(0) | トラックバック(0)


 ★ポイント
自前で認証局を立てる場合は、認証局側の作業とユーザー(サーバ管理者)側の作業をごっちゃにしないこと。
認証局側の作業をしているときは、「自分はベリサイン」と繰り返しつぶやきながらやる。

===認証局の証明書の作成(認証局側の作業)===
①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の設定をすることにしよう。





トラックバック(0)

このブログ記事を参照しているブログ一覧: 自前で認証局を立てて、オレオレ証明書でApacheでSSL

このブログ記事に対するトラックバックURL: http://hirop0164.s326.xrea.com/mt/mt-tb.cgi/234

コメントする


画像の中に見える文字を入力してください。

このブログ記事について

このページは、ぴろしが2009年1月 5日 12:39に書いたブログ記事です。

ひとつ前のブログ記事は「OpenSSLのインストールメモ」です。

次のブログ記事は「PostgreSQLでdigestとかのハッシュ関数を使う」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。