証明書の生成

証明書の概要

T.B.D. 概要部分は書きかけです。。。m(__)m

サーバー証明書

+-----------------+
|ルート認証局(CA) |
+-----------------+
    ↓ルート認証局の秘密鍵を用いて署名
+-----------------+
|中間認証局(CA)   |
+-----------------+
    ↓中間認証局の秘密鍵を用いて署名
+-----------------+
|サーバー証明書   |
+-----------------+

Webサーバー               Webブラウザ
+---------------+        +---------------------------------+
|ルート証明書   |        |ルート証明書 (信頼している証明書)|
+---------------+        +---------------------------------+
|中間証明書     |
+---------------+
|サーバー証明書 |
+---------------+
+---------------+
|サーバー秘密鍵 |
+---------------+

openssl のインストール

aptitude install openssl

ルート証明書(CA)+秘密鍵作成

  1. openssl.conf ファイルをコピーする。
    $ cd [任意のディレクトリ]
    $ mkdir RootCA
    $ mkdir RootCA/{certs,crl,newcerts,private}
    $ chmod 700 RootCA/private
    $ touch RootCA/index.txt
    $ cp /etc/ssl/openssl.conf ./openssl_rootca.cnf
  2. openssl_rootca.conf の以下を修正
    [ CA_default ]
    
    #*dir           = ./demoCA              # Where everything is kept
    dir             = ./RootCA              # Where everything is kept
    certs           = $dir/certs            # Where the issued certs are kept
    crl_dir         = $dir/crl              # Where the issued crl are keptir        
    
    ~(省略)~
    [ policy_match ]
    # 署名のポリシー (-policy policy_match にて指定)
    # match    : CAと一致
    # supplied : 記述が必須
    # optiona  : オプション
~(省略)~
[ usr_cert ]
crlDistributionPoints = URI:<失効リストのURL>
~(省略)~
[ v3_ca ]
~(省略)~
# 署名時に -extensions v3_ca を指定することで、
# ここに記載の失効リストのURL情報が付与される。
crlDistributionPoints = URI:<失効リストのURL>
~(省略)~
# サブジェクト代替名の設定
subjectAltName=@alt_names

[ alt_names ]
# ドメイン名リストを追加していく。
DNS.1 = <ドメイン名(例:ehobby.jp)>
DNS.2 = <ドメイン名(例:www.ehobby.jp や, *.ehobby.jp など)>
  1. シリアル番号設定 (署名の際のシリアル番号となる)
    echo 01 > RootCA/serial
  2. ルート認証局(CA) の証明書と秘密鍵生成
    $ oepnssl req \
        -new \
        -x509 \
        -sha256 \
        -config ./openssl_rootca.cnf \
        -out RootCA/cacert.pem \
        -days <有効期間(日数)> \
        -keyout RootCA/private/cakey.pem \
        -subj "/C=JP/ST=<都道府県名>/O=<会社名>/OU=<部署名>/CN=<ドメイン名>"
     Enter PEM pass phrase: <任意のパスフレーズを入力>
     Verifying - Enter PEM pass phrase: <確認のため、再度パスフレーズを入力>
    上記のコマンドにより、次のファイルが生成されます。 ※権限が異なる場合は、chmod で修正してください。
    cacert.pemルート認証局(CA)証明書権限:-rw-r--r-- (644)
    private/cakey.pemルート認証局(CA)の秘密鍵権限:-rw------- (600)
  3. 証明書の確認 次のコマンドで証明書の内容を確認できます。
    openssl x509 -text -noout -in RootCA/cacert.pem
  4. pem 形式→der 形式変換 (ブラウザに取り込む場合などに利用)
    openssl x509 -inform pem -in RootCA/cacert.pem -outform der -out RootCA/cacert.der
DERDistinguished Encoding RulesASN.1のエンコード方式の一つ X.509
PEMPrivacy Enhanced MailBase64にてエンコードした形式

中間証明書(CA)+秘密鍵作成

  1. openssl.conf ファイルをコピーする。
    # cd [任意のディレクトリ]
    # mkdir IntermediateCA
    # mkdir IntermediateCA/{certs,crl,newcerts,private}
    # chmod 700 IntermediateCA/private
    # touch IntermediateCA/index.txt
    # cp /etc/ssl/openssl.conf ./openssl_intermediateca.cnf
  2. openssl_intermediate.conf の以下を修正
    [ CA_default ]
    
    #*dir           = ./demoCA              # Where everything is kept
    dir             = ./IntermediateCA      # Where everything is kept
    certs           = $dir/certs            # Where the issued certs are kept
    crl_dir         = $dir/crl              # Where the issued crl are keptir 
    
    ~(省略)~
    [ usr_cert ]
    crlDistributionPoints = URI:<失効リストのURL>       
  3. シリアル番号設定 (署名の際のシリアル番号となる)
    echo 01 > IntermediateCA/serial
  4. ルート認証局(CA) の証明書と秘密鍵生成
    $ oepnssl req \
        -new \
        -sha256
        -config ./openssl_intermediateca.cnf \
        -out IntermediateCA/cacert_req.pem \
        -days <有効期間(日数)> \
        -keyout IntermediateCA/private/cakey.pem \
        -subj "/C=JP/ST=<都道府県名>/O=<会社名>/OU=<部署名>/CN=<ドメイン名>"
     Enter PEM pass phrase: <任意のパスフレーズを入力>
     Verifying - Enter PEM pass phrase: <確認のため、再度パスフレーズを入力>
    上記のコマンドにより、次のファイルが生成されます。
    cacert_req.pem中間認証局(CA)証明書の署名要求ファイル権限:-rw-r--r--
    private/cakey.pem中間認証局(CA)の秘密鍵権限:-rw-------
  5. ルート認証局による署名
    1. ルート認証局の cacert_req/ 配下に、cacert_req.pem を <ドメイン名>-cacert_req.pem ファイルとして配置する。
    2. ルート認証局のにて以下を実施する。
      openssl ca \
          -config ./openssl_rootca.cnf  \
          -policy policy_match \
          -extensions v3_ca \
          -days <有効期間(日数)> \
          -out cacert_req/<ドメイン名>-cacert.pem
          -infiles cacert_req/<ドメイン名>-cacert_req.pem
    3. 署名の確認
      openssl verify -purpose sslclient -CAfile RootCA/cacert.pem \
      cacert_req/<ドメイン名>-cacert.pem
  6. 署名後のファイルを中間認証局の IntermediateCA 配下に置く。

トップ   一覧 検索 最終更新   ヘルプ   最終更新のRSS