質問: ssl証明書を一意に識別します 特定のファイルがssl証明書であることを確認する方法を知りたいです。ファイル拡張子は、ファイルが証明書であるかどうかを確認するのに十分ですか?
回答: ssl証明書は、 x.509バージョン3証明書 にすぎず、一般的な使用法にいくつかの追加の制約があります。もちろん、主な制約はx500共通名(cn)であり、サーバーの名前に設定する必要があります。ちなみに、[サブジェクト代替名]フィールドにはさらに多くの名前が含まれる場合があります。さらに、ほとんどの証明書では、拡張キーの使用法をサーバー認証(oid:1.3.6.1.5.5.7.3.1に対応)に設定する必要があります。サーバーはクライアント認証を設定することもできます(oid:1.3.6.1.5.5.7.3.2)。少なくともtls1.2の場合、これらの制限は仕様に明示的に明示的に言及されていないことに注意してください(ugh)が、それらが存在することを確認したほうがよいでしょう ブラウザ/クライアントが殺人を叫び始めない限り 。ファイルが(tls)証明書であることを検証するには、windowsを使用してファイルを開き、いくつかの追加の制約を確認するのがおそらく最も簡単です。個人的にはしかし私は例えばを使用したいと思います。 opensslコマンドライン。テキストに簡単に出力できます。openssl x509 -text -noout -in stackexchangecom.pem たとえば、次のように出力します。certificate: data: version: 3 (0x2) serial number: 07:65:c6:4e:74:e5:91:d6:80:39:ca:2a:84:75:63:f0 signature algorithm: sha256withrsaencryption issuer: c=us, o=digicert inc, ou=www.digicert.com, cn=digicert sha2 high assurance server ca validity not before: oct 5 00:00:00 2018 gmt not after : aug 14 12:00:00 2019 gmt subject: c=us, st=ny, l=new york, o=stack exchange, inc., cn=*.stackexchange.com subject public key info: public key algorithm: rsaencryption public-key: (2048 bit) modulus: 00:f4:a9:3a:35:75:0f:d6:87:17:b7:cf:66:4f:57: 08:c5:a7:41:87:30:8b:d1:84:ea:3f:4d:7f:0d:2a: 2d:50:74:73:57:bd:2a:38:24:fb:01:d3:13:d0:ad: 49:8b:aa:c5:c9:aa:73:46:2a:94:22:10:24:84:4b: 1e:5d:1a:74:30:da:f6:d5:f4:94:c3:85:68:09:bf: 88:98:ee:a0:9c:89:73:a2:59:21:ae:92:ba:23:2d: f8:2b:25:37:cf:2b:7c:5d:80:fe:99:8d:e2:f0:68: cf:64:ec:ac:44:93:4b:cb:7a:2e:40:19:b3:b8:e9: 94:ff:61:68:9a:79:a2:10:61:74:da:65:60:6f:77: af:f0:fa:dc:9e:de:dd:0a:21:7b:96:20:48:b1:dd: f3:90:f7:97:bd:35:58:71:57:1b:fc:c0:6b:14:4c: dc:e0:5b:88:ba:98:53:88:96:e8:37:3f:30:1e:ff: 7e:3d:70:17:51:41:fc:4c:44:ab:51:f1:4f:08:a2: 47:c1:df:44:02:83:57:f2:33:d4:d5:32:31:88:2a: 1e:e9:73:79:13:59:8f:c8:68:32:bc:49:da:70:7f: c7:7a:b2:bf:78:b7:38:e8:be:d8:59:51:91:ca:31: d6:69:a4:ca:d2:b2:61:2a:09:21:e7:da:ac:58:17: 67:e7 exponent: 65537 (0x10001) x509v3 extensions: x509v3 authority key identifier: keyid:51:68:ff:90:af:02:07:75:3c:cc:d9:65:64:62:a2:12:b8:59:72:3b x509v3 subject key identifier: 9a:8a:c1:6e:c1:f2:4d:fa:d9:7b:02:d4:8f:b3:03:ac:6a:3d:c6:58 x509v3 subject alternative name: dns:*.stackexchange.com, dns:stackexchange.com, dns:stackoverflow.com, dns:*.stackoverflow.com, dns:stackauth.com, dns:sstatic.net, dns:*.sstatic.net, dns:serverfault.com, dns:*.serverfault.com, dns:superuser.com, dns:*.superuser.com, dns:stackapps.com, dns:openid.stackauth.com, dns:*.meta.stackexchange.com, dns:meta.stackexchange.com, dns:mathoverflow.net, dns:*.mathoverflow.net, dns:askubuntu.com, dns:*.askubuntu.com, dns:stacksnippets.net, dns:*.blogoverflow.com, dns:blogoverflow.com, dns:*.meta.stackoverflow.com, dns:*.stackoverflow.email, dns:stackoverflow.email, dns:stackoverflow.blog x509v3 key usage: critical digital signature, key encipherment x509v3 extended key usage: tls web server authentication, tls web client authentication x509v3 crl distribution points: full name: uri:http://crl3.digicert.com/sha2-ha-server-g6.crl full name: uri:http://crl4.digicert.com/sha2-ha-server-g6.crl x509v3 certificate policies: policy: 2.16.840.1.114412.1.1 cps: https://www.digicert.com/cps policy: 2.23.140.1.2.2 authority information access: ocsp - uri:http://ocsp.digicert.com ca issuers - uri:http://cacerts.digicert.com/digicertsha2highassuranceserverca.crt x509v3 basic constraints: critical ca:false ct precertificate scts: signed certificate timestamp: version : v1(0) log id : a4:b9:09:90:b4:18:58:14:87:bb:13:a2:cc:67:70:0a: 3c:35:98:04:f9:1b:df:b8:e3:77:cd:0e:c8:0d:dc:10 timestamp : oct 5 02:24:01.827 2018 gmt extensions: none signature : ecdsa-with-sha256 30:46:02:21:00:f0:9a:77:1b:f8:ed:c0:78:40:e3:af: 37:db:3f:47:6d:c4:7a:91:1b:48:8e:3f:32:e0:1d:7f: 9b:ca:79:4e:fd:02:21:00:da:06:77:3b:c9:f3:b9:45: 5a:9d:15:bd:7e:0e:a6:81:fb:0b:d3:c3:67:fd:91:a6: ef:73:bf:17:72:06:5f:65 signed certificate timestamp: version : v1(0) log id : 87:75:bf:e7:59:7c:f8:8c:43:99:5f:bd:f3:6e:ff:56: 8d:47:56:36:ff:4a:b5:60:c1:b4:ea:ff:5e:a0:83:0f timestamp : oct 5 02:24:02.054 2018 gmt extensions: none signature : ecdsa-with-sha256 30:46:02:21:00:d0:8d:f9:95:06:af:bf:cb:68:01:2b: f7:84:f7:1e:a3:cf:d8:53:67:9b:48:7e:19:12:b5:2f: 39:7c:c0:31:7a:02:21:00:c0:2e:36:4c:ae:3b:8b:74: e8:48:84:80:c5:a2:6a:52:59:b8:09:e4:43:0d:bd:19: c7:88:04:6f:2b:d4:0a:77 signature algorithm: sha256withrsaencryption 00:93:ce:f7:ff:ed:90:b3:02:9f:25:24:27:fa:26:5e:65:cf: 2e:88:68:3d:f6:99:9d:d3:4f:04:d9:c9:86:12:ba:8d:cc:f7: 25:2b:d2:0d:6c:f8:f0:c6:5f:73:22:04:dc:5e:91:7f:52:d0: 55:55:2d:59:ed:7a:3c:de:a7:ec:18:c3:dd:33:36:2d:dc:5f: a1:42:94:18:2e:19:46:17:ee:49:7f:6c:7a:65:bd:73:8d:3f: da:33:71:8c:74:68:be:e8:e3:d5:f9:81:e5:ff:08:14:7b:8e: 4d:ea:44:6e:0d:99:d5:2f:5e:bb:f9:6d:e5:da:70:fe:99:28: 4e:ff:bc:6a:c0:78:99:bb:3d:06:1f:20:47:46:9e:62:e3:76: e5:1f:4b:e0:eb:bb:09:f2:0b:8d:f3:5a:5a:a6:ea:58:da:fe: fc:15:cb:d1:f2:3d:04:2d:f8:32:7a:1b:56:a6:31:77:bf:32: 92:ab:fa:d8:da:c3:17:4d:8c:d2:3e:a3:1e:92:cb:1e:1c:d8: 52:31:85:3a:5b:0f:61:f6:9c:8c:69:59:f0:f6:f6:a1:a9:fe: e7:28:71:dc:0b:65:51:4d:48:24:41:f9:fd:c8:39:a6:04:ea: 34:9d:0f:17:81:fa:5d:eb:9f:cf:6b:15:5f:06:7b:8a:7c:49: 17:05:fa:4c これは、pem形式の証明書を想定しています。バイナリ形式の場合は-inform derを追加でき、どちらが使用されているかを確認するには、linuxおよびcygwinに一般的に存在するfileコマンドを使用できます(正しくインストールされている場合)。 。個人的には、ファイル拡張子を必ずしも信頼するわけではありません。間違った拡張子のファイルを作成するのは簡単すぎます。ファイル拡張子は非常に緩いタイピングシステムです。これで、ファイルが構造に関してx.509証明書であることを確認できました。ただし、信頼できる証明書までの証明書チェーンをさらに検証することもできます。また、証明書が適切な日付でまだ有効であるかどうかを確認するなど、他の検証も実行することをお勧めします。 ここ はそれを行う方法へのポインタです。完全に完了するには、ocspステータスをチェックして、認証局(ca)が証明書を失効させたかどうかを確認することもできます。証明書が敵対者によって生成される可能性がある場合、または会社の開発者の1人によって生成された(自己署名)テスト証明書である場合は、間違いなくこれが必要になります。