今日は小ネタです。

今日、某IPアドレスで書かれたサイトにHTTPSでアクセスしてみると うむむ、FireFox 3.6.23だと 信頼できない接続のアラートが、、、
ipadr1

IE8だと問題ありません。
ipadr2

んなアホな。 うむむと思ってSSLサーバー証明書を見てみると

SubjectAltNameのGeneralName値が

dNSName: 192.168.1.5

みたいにDNS NameのところにIPアドレスが 書いてある証明書のせいみたいなんです。

RFC 3280 ではsubjectAltNameにドメイン名を入れる場合には dNSNameフィールドに入れなければならず(MUST)、 RFC 1034の"prefered name syntax"でなければ ならない(MUST)となっています。

RFC 3280 4.2.1.7 SubjectAltNameより
When the subjectAltName extension contains a domain name system label, the domain name MUST be stored in the dNSName (an IA5String). The name MUST be in the "preferred name syntax," as specified by RFC 1034 [RFC 1034].

で、RFC 1034のpreferred name syntaxを見てみると 普通のFQDNドメイン名でありラベルの先頭は英大小文字の A-Zにでなければならないので、 dNSNameには "192.168.1.5" のようなIPアドレスは 入れてはならないことになります。

IPアドレスを指定したい場合にはiPAddressフィールドが使えますよね。

GeneralName ::= CHOICE {
   otherName            [0]   OtherName,
   rfc822Name           [1]   IA5String,
   dNSName             [2]   IA5String,
   x400Address           [3]   ORAddress,
   directoryName          [4]   Name,
   ediPartyName          [5]   EDIPartyName,
   uniformResourceIdentifier    [6]   IA5String,
   iPAddress            [7]   OCTET STRING,
   registeredID          [8]   OBJECT IDENTIFIER }

FireFoxは厳密にsubjectAltName dNSNameをみて それがFQDNでないとリジェクトしちゃうけども、 IE8はIPアドレスが書いてあっても通してしまうと、、、 結局は発行した証明書のsubjectAltNameが 間違ってるってことなんですが誰に言えばいいんですかねぇ、、、