4と5のリビジョン間の差分
2016-05-03 02:28:38時点のリビジョン4
サイズ: 11339
コメント:
2016-05-03 02:47:59時点のリビジョン5
サイズ: 3737
コメント:
削除された箇所はこのように表示されます。 追加された箇所はこのように表示されます。
行 36: 行 36:
 * 詳細は [[/req|openssl x509]]ページ参照のこと。
 * ここではコマンドとオプションのみ紹介する。
行 39: 行 41:
=== コマンド === === コマンド(-text オプション) ===
行 45: 行 47:
=== 実行結果例 ===
{{{
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            03:e1:0f:20:74:80:01:0b:82:f8:ad:53:39:d8:74:30:4f:02
    Signature Algorithm: sha256WithRSAEncryption
        Issuer: C=US, O=Let's Encrypt, CN=Let's Encrypt Authority X3
        Validity
            Not Before: Apr 30 09:08:00 2016 GMT
            Not After : Jul 29 09:08:00 2016 GMT
        Subject: CN=wiki.ninth-nine.com
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (2048 bit)
                Modulus:
                    00:c3:6e:81:a0:ca:e8:d2:6a:b9:f1:ef:23:c2:3e:
                    80:c6:77:fa:e1:57:89:07:bd:10:16:db:b2:40:e9:
                    d5:85:24:e5:3f:84:ac:f7:60:07:7a:f7:62:aa:9f:
                    eb:f5:ee:da:4e:ff:13:06:d7:77:c7:29:dd:7e:89:
                    68:75:38:ca:5a:10:c6:d5:8e:7a:95:5b:59:90:5b:
                    59:9c:17:74:69:ea:fe:d7:a9:91:af:01:c6:cb:d9:
                    95:cc:0b:27:a3:c3:af:f7:eb:e8:e2:3a:99:ba:1a:
                    9e:fc:db:fe:d5:b7:fd:8e:81:da:ad:79:dd:eb:19:
                    b2:bb:8a:1d:04:b6:fa:bb:49:4d:a7:e1:43:42:05:
                    b6:45:1b:83:5f:52:12:d9:97:05:07:ff:92:7a:96:
                    8d:f3:19:7b:9d:0b:cf:01:54:1c:5d:41:87:5d:11:
                    e8:d1:9b:03:7a:b3:16:31:55:9f:b5:37:88:93:40:
                    d6:29:95:df:68:24:e8:6b:5a:f5:50:fc:9b:55:13:
                    8a:dd:2b:88:19:93:14:de:a7:bc:b5:6a:1c:8f:04:
                    67:74:6b:fd:b9:ab:56:ca:e7:04:63:63:2c:cc:0a:
                    cc:f9:cf:b0:58:db:c5:fa:0b:08:ab:6c:5a:5c:9e:
                    c1:c2:29:72:b0:cb:c3:0b:aa:4f:48:aa:0a:cf:3c:
                    8a:b1
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Key Usage: critical
                Digital Signature, Key Encipherment
            X509v3 Extended Key Usage:
                TLS Web Server Authentication, TLS Web Client Authentication
            X509v3 Basic Constraints: critical
                CA:FALSE
            X509v3 Subject Key Identifier:
                8A:69:F2:2E:DC:EB:A9:23:52:A3:36:3A:3A:D7:2E:B1:A2:D6:37:84
            X509v3 Authority Key Identifier:
                keyid:A8:4A:6A:63:04:7D:DD:BA:E6:D1:39:B7:A6:45:65:EF:F3:A8:EC:A1

            Authority Information Access:
                OCSP - URI:http://ocsp.int-x3.letsencrypt.org/
                CA Issuers - URI:http://cert.int-x3.letsencrypt.org/

            X509v3 Subject Alternative Name:
                DNS:wiki.ninth-nine.com
            X509v3 Certificate Policies:
                Policy: 2.23.140.1.2.1
                Policy: 1.3.6.1.4.1.44947.1.1.1
                  CPS: http://cps.letsencrypt.org
                  User Notice:
                    Explicit Text: This Certificate may only be relied upon by Relying Parties and only in accordance with the Certificate Policy found at https://letsencrypt.org/repository/

    Signature Algorithm: sha256WithRSAEncryption
         45:d6:01:67:fd:77:08:09:c4:42:83:7b:dd:53:eb:89:7f:8c:
         d3:8e:e6:f7:e4:17:0b:db:21:a0:aa:e8:64:60:59:b8:cc:0c:
         11:3b:34:14:dc:4a:6c:5a:55:1e:57:ff:3c:86:eb:c8:9e:17:
         04:92:b7:e0:9c:90:4f:b6:8f:a4:41:fc:3e:f5:9b:78:eb:28:
         af:1c:4a:7d:20:ba:76:7e:24:76:cf:d1:16:07:d3:3a:8f:42:
         53:5e:dd:74:31:b8:77:43:d5:19:bf:2a:fd:5e:e0:c1:e3:af:
         61:fe:7c:0b:01:bb:12:10:c5:64:5a:a6:8b:fb:a9:18:cc:f2:
         3c:79:1a:83:be:aa:05:ec:08:2d:05:cc:31:24:ab:81:2c:95:
         7c:9c:02:5b:a3:ea:38:3c:b1:38:be:71:df:ec:6a:76:9a:86:
         19:8c:02:71:ff:16:40:2f:6e:41:cb:81:44:b8:57:f9:85:ae:
         6e:fd:90:32:1f:e8:b5:ed:fb:15:d3:8c:c3:c4:ee:2f:dc:61:
         26:81:73:08:06:2d:de:b0:b5:48:07:3e:75:5d:3b:bc:9e:fb:
         01:a7:cc:4e:c9:32:2a:99:19:26:2c:78:84:f5:58:04:75:77:
         19:f9:a6:e6:2a:e2:7a:73:61:39:df:81:44:91:04:e8:15:61:
         05:f5:19:5c
}}}

この結果から以下のことがわかる。

==== 署名情報 ====
||<#FFFF00> ラベル名 ||<#FFFF00> 内容 ||<#FFFF00> 意味 ||<#FFFF00> 備考 ||
|| Subject || CN=wiki.ninth-nine.com || サブジェクト(主体者)のディスティングイッシュ名 || ||
|| Issuer || C=US, O=Let's Encrypt, CN=Let's Encrypt Authority X3 || イシュア(発行者)のディスティングイッシュ名 || ||
|| Not Before || Apr 30 09:08:00 2016 GMT || 有効期限(開始日時) || ||
|| Not After || Jul 29 09:08:00 2016 GMT || 有効期限(終了日時) || ||
|| Public Key Algorithm || rsaEncryption || 公開鍵暗号アルゴリズムはRSA暗号 || ||
|| Signature Algorithm || sha256WithRSAEncryption || 署名アルゴリズムは SHA256 || ||

==== RSA暗号パラメータ ====
||<#FFFF00> ラベル名 ||<#FFFF00> 内容 ||<#FFFF00> 意味 ||<#FFFF00> 備考 ||
|| Public-Key || 2048 bit || 2048bit 公開鍵 || ||
|| Modulus || モジュロ(2048bit 分) || モジュロ || 秘密鍵のモジュロと一致 ||
|| Exponent || 65537 (0x10001) || 冪指数         || 65537 を明示 ||

RSA暗号パラメータ(モジュロや冪指数)については以下の文献が詳しい。
 * [[http://akademeia.info/index.php?RSA%B0%C5%B9%E6|RSA暗号]]
 * [[http://d.hatena.ne.jp/ozuma/20130510/1368114329|opensslでRSA暗号と遊ぶ]]

==== 属性(Attributes) ====
||<#FFFF00> ラベル名 ||<#FFFF00> 内容 ||<#FFFF00> 意味 ||<#FFFF00> 備考 ||
|| X509v3 Key Usage || Digital Signature, Key Encipherment || 証明書の用途(電子署名と鍵暗号) || ||
|| X509v3 Extended Key Usage || TLS Web Server Authentication, TLS Web Client Authentication || 証明書の拡張用途(SSLサーバー証明、SSLクライアント証明) || ||
|| X509v3 Basic Constraints || CA:FALSE || 署名チェインの可否(しない) || ||
|| X509v3 Subject Alternative Name || DNS:wiki.ninth-nine.com || SAN || ||

=== コマンド ===
=== コマンド(-subject/-issuer オプション) ===
行 155: 行 50:
openssl req -noout -subject -issuer-in CRTファイル名.crt openssl req -noout -subject -issuer -in CRTファイル名.crt
行 159: 行 54:
=== 実行結果 ===
{{{
subject= /CN=wiki.ninth-nine.com
issuer= /C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3
}}}

=== コマンド ===
=== コマンド(-startdate/-enddate オプション) ===
行 172: 行 61:
=== 実行結果 ===
{{{
notBefore=Apr 30 09:08:00 2016 GMT
notAfter=Jul 29 09:08:00 2016 GMT
}}}

=== コマンド ===
=== コマンド(-modulus オプション) ===
行 187: 行 70:
=== 実行結果 ===
{{{
}}}
空の結果が正常。差分が発生した場合、CRTと秘密鍵は一致していない。{{{diff}}} の代わりに{{{cmp}}}を使うでも良い。

OpenSSL

よくあるOpenSSLの使い方を紹介する。OpenSSLはバージョン毎でできることが違うので注意。違いが顕著なところについてはOS毎に解説する。

SSL証明書発行関連について別項目で紹介する。

署名リクエスト(CSR)の確認

  • 詳細は openssl reqページ参照のこと。

  • ここではコマンドとオプションのみ紹介する。

コマンド(-text オプション)

CSRが有する詳細情報を表示する。

openssl req -noout -text -in CSRファイル名.csr

コマンド(-subject)

サブジェクト(主体者)のディスティングイッシュ名を取得する。

openssl req -noout -subject -in CSRファイル名.csr

コマンド(-modulus)

モジュロを取得する。取得するだけだと何する?なので、秘密鍵と対になっているか確認する。

diff -u <(openssl req  -noout -modulus -in CSRファイル名.csr) <(openssl rsa  -noout -modulus -in 秘密鍵ファイル名.key)

<()というイディオム(実行結果をテンポラリファイル名で渡してくれる)は zsh/bash 拡張なので、シェルスクリプト(sh/ash/ksh)中では使わないこと。

署名済公開鍵(CRT)の確認

  • 詳細は openssl x509ページ参照のこと。

  • ここではコマンドとオプションのみ紹介する。
  • 署名済み公開鍵のことをcertificateと呼ぶがCSRのように明確に定義(省略形)しているのは無いが、比較的、一般的に通じる「CRT」で通すものとする。もちろん秘密鍵は「KEY」で。
  • 大枠は -text オプションを指定することになるが、個別にデータを取りたい場合のオプションを解説する。

コマンド(-text オプション)

openssl x509 -noout -text -in CRTファイル名.crt

コマンド(-subject/-issuer オプション)

サブジェクト(主体者)やイシュア(発行者)のディスティングイッシュ名を取得する。もちろんオプションは別々に指定可能。

openssl req -noout -subject -issuer -in CRTファイル名.crt

コマンド(-startdate/-enddate オプション)

有効期限(開始日時あるいは終了日時)を取得する。もちろんオプションは別々に指定可能。

openssl x509 -noout -startdate -enddate -in openssl x509 -noout -startdate -enddate -in CRTファイル名.crt

コマンド(-modulus オプション)

モジュロを取得する。取得するだけだと何する?なので、秘密鍵と対になっているか確認する。

diff -u <(openssl x509 -noout -modulus -in CRTファイル名.crt) <(openssl rsa  -noout -modulus -in 秘密鍵ファイル名.key)

<()というイディオム(実行結果をテンポラリファイル名で渡してくれる)は zsh/bash 拡張なので、シェルスクリプト(sh/ash/ksh)中では使わないこと。

参考文献

OpenSSL (最終更新日時 2016-05-04 17:20:27 更新者 NorikatsuShigemura)