(19:53 更新)
以前やったネームベースの VirtualHost で SSL/TLSと同じ事なんですが,subjectAltName に IP アドレスを入れて,更にそれを IIS に読み込ませるという事をやったので,メモ.
以前と同様に,外部ファイルを作りました (この外部ファイルが ca コマンドでしか読めないのはなぜ? req コマンドで指定してもよさげ).
IPアドレスでアクセスするので,以下のように subjectAltName も "IP" を指定してやってみました.これだと Firefox2 だと問題なく全てのアドレスでアクセス出来ましたが,IE6 と Opera9 だと,証明書内の名前とアクセスしようとしているサーバ名が違う,というような警告が出ます.
basicConstraints = CA:FALSE keyUsage = digitalSignature, keyEncipherment extendedKeyUsage = serverAuth subjectKeyIdentifier = hash authorityKeyIdentifier = keyid,issuer:always subjectAltName = IP:192.168.0.1,IP:192.168.0.2,IP:192.168.0.3
なので,結局 以前 と同様で
basicConstraints = CA:FALSE keyUsage = digitalSignature, keyEncipherment extendedKeyUsage = serverAuth subjectKeyIdentifier = hash authorityKeyIdentifier = keyid,issuer:always subjectAltName = DNS:192.168.0.1,DNS:192.168.0.2,DNS:192.168.0.3
としました.でも IP アドレスを入れているのだし,"IP" が正しいような気がするけど...
で,同様に
# openssl ca -config /path/to/config -in csr.pem -out cert.pem -extfile /path/to/extfile
とすると,
X509v3 Subject Alternative Name: DNS:192.168.0.1, DNS:192.168.0.2, DNS:192.168.0.3
となりました.ちなみに "IP" を指定したときは,以下のようになってました.
X509v3 Subject Alternative Name: IP Address:192.168.0.1, IP Address:192.168.0.2, IP Address:192.168.0.3
あとは pkcs12 形式に変換 (これ使うの久々だ).
$ openssl pkcs12 -export -inkey key.pem -in cert.pem -out cert.p12
IIS にインポートする方法は
なんかを参照.