カテゴリー
最近更新したページ
最新コメント
ApacheSSL by stunning seo guys
EMMA by stunning seo guys
EMMA by stunning seo guys
Derby by stunning seo guys
GanttPlugin by stunning seo guys
JavaHL by awesome things!
FrontPage by check it out
ApacheSSL by stunning seo guys
java_subversion by check it out
SubversionInstall by awesome things!

ApacheSSL

ApacheでSSL通信を行うための覚書。

基本的に、パソコンおやじさんのサイトに記載されているSSL用証明書の作成(Windows編)の通りに行えばOKですが、最終更新日が2006/8/31の版においてはPerlもインストールされている環境が前提となっているようなので、Perlなしの場合(openssl.exeだけで作成する場合)の作成に関するメモとなっています(CA.plのソースを元に実際に実行しているコマンドに置き換えていっただけですが)。

なお、全てカレントフォルダはOpenSSLのbinフォルダとなっているという前提となっています(使用したのは0.9.8dです)。

CA用秘密鍵(cakey.pem)とCA用証明書(cacert.pem)の作成


事前準備


openssl.cnfファイルを編集しておきます(コメント解除・内容編集等)。

[ CA_default ] セクション


 以下の2ヶ所の設定を確認します。

unique_subject = yes
crlnumber = $dir/crlnumber

[ usr_cert ] セクション


 以下の設定を確認します。

nsCertType = server

[ v3_ca ] セクション


 以下の設定を確認します。

nsCertType = sslCA, emailCA

ca.pl -newcaの置き換え


いくつかのフォルダ・ファイルの作成


  • md .\demoCA
  • md .\demoCA\certs
  • md .\demoCA\crl
  • md .\demoCA\newcerts
  • md .\demoCA\private
  • type NUL > .\demoCA\index.txt
  • echo 01> .\demoCA\crlnumber
    • "01"の直後にはスペースはありません。

cakey.pem(server.key)及びcareq.pemを作成


  • openssl req -new -keyout .\demoCA\private\cakey.pem -out .\demoCA\private\careq.pem
  • openssl ca -create_serial -out ./demoCA/cacert.pem -days 1095 -batch -keyfile ./demoCA/private/cakey.pem -selfsign -extensions v3_ca -infiles ./demoCA/private/careq.pem
    • daysオプションのあとのパラメータを変更することで、CA証明書の有効期限を変更することができます。

サーバ用CA証明書の作成


  • openssl x509 -in ./demoCA/cacert.pem -out ./demoCA/cacert.crt
    • この部分はCA.plに含まれていないため、元々opensslでの処理となっています。

サーバ用証明書の作成


ca.pl -newreq-nodesの置き換え


newreq.pem, server.key(newkey.pem), newcert.pemの作成


  • openssl req -new -nodes -keyout server.key -out newreq.pem -days 365
    • nodesオプションを付加することで、起動時のパスワード入力を回避(このオプションがないとWindows上では起動できません)。
    • なお、出力ファイルはCA.pl内ではnewkey.pemですが、server.keyに変更しています。
      • 別にファイル名は何でもいいのですが、Apacheのconfファイルにおいてserver.keyで記述している資料が多いので。最初newkey.pemがそのファイルに相当することに気付かず、しばらく悩んでいました。
    • Common Nameとして、サーバのホスト名(www.testsvr.jp等)を登録。

ca.pl -signの置き換え


server.crtの作成


  • openssl ca -policy policy_anything -out newcert.pem -infiles newreq.pem

後処理


サーバ証明書の部分のみを切り出し


  • openssl x509 -in newcert.pem -out server.crt

サーバ証明書のバックアップ


  • newcert.pem, newreq.pem, server.crt, server.keyの4ファイルを任意のフォルダにコピー。

クライアント用証明書の作成


事前準備


openssl.cnfファイルを編集しておきます(コメント解除・内容編集等)。

[ usr_cert ] セクション


 以下の2ヶ所の設定を確認します。

# nsCertType = server
nsCertType = client, email

ca.pl -newreqの置き換え


newreq.pemの作成


  • openssl req -new -keyout newkey.pem -out newreq.pem -days 365

ca.pl -signの置き換え


newcert.pemの作成


  • openssl ca -policy policy_anything -out newcert.pem -infiles newreq.pem

ca.pl -pkcs12の置き換え


p12ファイルの作成


  • openssl pkcs12 -in newcert.pem -inkey newkey.pem -certfile ./demoCA/cacert.pem -out newcert.p12 -export -name FriendlyName

Apacheの設定


 パソコンおやじさんのサイトSSLによるSecureWWWサーバの構築(Windows編)に詳しくまとめられていますが、ざっくりと必要な部分だけを抜き出すと・・・。

SSLMutexの設定


 Win32環境では使えないので、コメント化する必要があります。

#SSLMutex default

証明書ファイルの設定


 ざっくり、以下の部分を書き換えることになります。

SSLCertificateFile conf/cert/server.crt
SSLCertificateKeyFile conf/cert/server.key

SSLCACertificatePath conf/cert
SSLCACertificateFile conf/cert/cacert.crt

SSLVerifyClient require
SSLVerifyDepth 1

注意点


クライアント証明書を用いたアクセスに関して


  • p12ファイルをインポートする際に必要となるのは、Export用のパスワードとなります。
  • https://hoge/fuga/ 以下にクライアント証明書の要求を設定した場合、http://hoge/fuga/でアクセスすると証明書なしでアクセスできてしまいます。従って、クライアント証明書でアクセス制限をするエリアに関してはSSL通信を必須とする用にApache側の設定を行う(SSLRequireSSLディレクティブを使用)必要があります。
  • Windows2000+IE6の組み合わせでアクセスした場合、クライアント証明書の一覧ダイアログが表示されません。そのため、証明書が必要なURLに対して証明書なしでアクセスした場合、証明書がないからアクセスできないのか、サーバの設定を間違えたからアクセスできないのか判断できない場合があるようです。
    • WindowsXP+IE7(IE6も?)の場合は、証明書が必要なところへアクセスすると証明書が登録されていない場合でもダイアログが表示されるようです。
2007年03月11日(日) 16:02:34 Modified by syo1976




スマートフォン版で見る