スポンサーリンク

サーバー証明書の形式(X.509, PKCS#7)

スポンサーリンク

サーバー証明書の種類が多く複雑であったので,一通り理解するためにまとめます

サーバー証明書の形式

サーバー証明書の形式は大別してX.509, PKCS#7があります

X.509

ITU-Tで標準化された証明書形式です.以下が正式な公式Documentとなります

ITU-T Recommendation database

形式

X.509では以下のようなフォーマットとなっています.

  • version
  • serialNumber
  • signature
  • issuer
  • validity
  • subject
  • subjectPublicKeyInfo
  • issuerUniqueIdentifier
  • subjectUniqueIdentifier
  • extensions

Google Chromeで証明書を確認する

これでは分かりづらいので実際に見てみることを推奨します.以下のように鍵マークをクリックすることで証明書を確認することができます.

それぞれに記載されるべき内容が分かります.

subjectAltName (SANs)

subjectAltNameはsubjectの代替となる名称です.拡張表記で追加された要素です.しかし,subjectのcommon nameの代替どころか,もはやこちらが認証の主体となっているため,こちらを正しく設定する必要があります.

例えば,Chromeではsubjectのcommon nameでは認証を行わず,subjectAltNameのパラメータでCNを判定しています.背景としては,CNが不確定性を含んでおり,ブラウザのセキュリティホールとなっていたことがあるようです.

subjectAltNameの設定方法にはいくつかあり,

  • iPAddress 
  • dNSName 
  • directoryName 

などで指定できます.dNSNameが今までのCN相当表記をワイルドカードも交えて扱えます.なお,自分がものすごく気になったdNSNameのdNSとはDomain Name Serverのことではなく,Domain Name Systemの略称です.Domain Name Serverを表している訳ではありません.

記法【ASN.1】

X.509ではASN.1という記法を利用します.こちらもITU-Tで規定されています.

https://www.itu.int/rec/T-REC-X.680

以下のような形式となります.例えば,有効期間の書き方は以下のように記載できます.

 Validity ::= SEQUENCE {  
    notBefore Time,  
    notAfter Time,  
    ...
 }  

X.509サーバー証明書の拡張子

上記したようにX.509はASN.1形式で記述されており,これをバイナリ化する場合にいくつかのEncode形式が用意されています.そのEncode形式によって拡張子が異なります.

  • Basic Encoding Rules (.pem) (Base64 Encoding)
  • Distinguished Encoding Rules (.der)
  • Canonical Eonciding Rules(.cer)

等が存在します.ただ単にEncoding Ruleが異なるだけで,中身は同一です.対応するEncoding方式でDecodeしてファイルを認識しましょう

PKCS#7

Public key Cryptography Standardsの略称.RSAセキュリティ社が定めた規格.ルート証明書,中間証明書等の証明書を一括して表記することが可能が形式です.PKCS#7がX.509を複数内包する形式と理解してください.

記法

基本的にはX.509と同様にASN.1を使用します

拡張子

.p7b

.pemと互換性があります.

タイトルとURLをコピーしました