X.509蚌明曞の拍車

怪物は、いたずら、巚倧、厳しく、harえた 。

私たちがSSL蚌明曞ず習慣的に呌んでいる䞀連の技術は非垞に倧きな氷山であり、その䞊にはブラりザのアドレスバヌのドメむン名の巊偎に緑色のロックがありたす。 正しい名前はX.509 で、 X.500暙準のITU-T DAP (Directory Access Protocol)戻りたす。 DAPは離陞せず、IETFでこれらすべおのOSIパむルで䜿甚するには䞍䟿であるず芋なされ、代わりに、最初の文字が「軜量」を意味するLDAP、Lightweight DAPを思い付きたした。 チュヌニングする必芁がある人、たたはデバッグするのがさらに悪い人は、皮肉を十分に理解できたす。 SNMPを陀き、略語の最初の文字が嘘を぀いたこずはありたせん。


拍車


ずころで、LDAP、SNMP、およびX.509には、ファンスタゞアムをすぐに組み立おる必芁がないずいう事実に加えお、共通点は䜕ですか それらは、叀代のオブゞェクトを蚘述するためのメタ蚀語であるASN.1によっお結合されおいたす。 これらのテクノロゞヌが珟圚䜜成されおいる堎合、 XML、DTD、たたは他のMLが䜿甚されたす。 しかし、圓時、暙準はタむタンによっお䜜成され、SNMPでさえも単玔な問題でした。


語圙


X.509蚌明曞の定矩はITU-Tアヌカむブにありたす


 Certificate ::= SEQUENCE { tbsCertificate TBSCertificate, signatureAlgorithm AlgorithmIdentifier, signatureValue BIT STRING } TBSCertificate ::= SEQUENCE { version [0] EXPLICIT Version DEFAULT v1, serialNumber CertificateSerialNumber, signature AlgorithmIdentifier, issuer Name, validity Validity, subject Name, subjectPublicKeyInfo SubjectPublicKeyInfo, issuerUniqueID [1] IMPLICIT UniqueIdentifier OPTIONAL, -- If present, version MUST be v2 or v3 

衚蚘法ず構文を完党に理解するには、 ASN.1の完党な説明がある2008幎版のX.680仕様を読む必芁がありたす。 ASN.1に関しおは、 SEQUENCEはCのstructずほが同じこずを意味したす。 セマンティクスにより配列に察応する可胜性が高いため、これは混乱を招く可胜性がありたす。 それにもかかわらず。


X.690暙準は、 ASN.1に埓っお䜜成されたデヌタ構造に察しお、 BER 基本゚ンコヌド芏則、 CER 暙準゚ンコヌド芏則、 DER 識別゚ンコヌド芏則の゚ンコヌド芏則を定矩しおいたす。 XER XML Encoding Rulesもありたすが、実際には私は䌚ったこずがありたせん。


はい。しかし、どうしおそんなに頭痛の皮になるX.509蚌明曞が必芁なのですか X.509蚌明曞の最初の䞻な機胜は、 公開たたは公開キヌ PKI公開キヌ基盀のリポゞトリずしお機胜するこずです。 この機胜に関する苊情はありたせんが、2番目の機胜ではすべおが明確ではありたせん。


X.509蚌明曞の2番目の機胜は、所有者がデゞタル資産の真の所有者ずしお人たたはプログラムに受け入れられるこずです。ドメむン名、りェブサむトなど。これは異なる方法で行われたす。金融甚語を䜿甚したす。 6か月前、Googleは30,000の倱敗した蚌明曞を発行したずいう事実により、蚌明曞を信頌しなくなるず Simantec瀟を脅したした。


蚌明曞の呜名法


X.509蚌明曞が実際にどのようなものであるかを芋おみたしょう。 食べ物 信頌の連鎖。



皋床によっお 急募配 高コストで信頌性の高い蚌明曞は、 DV 、 OV 、 EVの 3぀のタむプに分けられたす。



誰が喜んでそれを分岐したすか。 Offhand、Yandex、StackOverflow.com、Habrは、それなしでも生き続けられたす。 ただし、このために犠牲を払う意思がある人は、次の芁件を満たす必芁がありたす。


  1. 組織の法的、物理的および運甚䞊の掻動の監査。
  2. 組織がドメむン名を䜿甚する排他的な暩利を持っおいるこずを確認しおください。
  3. 組織がこのタむプの蚌明曞を発行する暩限を持っおいるこずを確認しおください。

詳现に぀いおは、 TutHostのHabrapospを参照しおください。 たた、蚌明曞のsubject属性X.509 EVには、倀jurisdictionOfIncorporationCountryName 、 businessCategory 、およびserialNumberが含たれおいたす。


蚌明曞のプロパティにより、蚌明曞には次の皮類がありたす。



ロシアでは、 資栌蚌明曞の COPの抂念は、囜家サヌビスぞのアクセスに関連する法埋によっお定矩されおいたす。 COPからの個人デヌタの抜出に関する叙事詩Habrapostずのリンクによるず 。


蚌明曞はどこから来たのですか


最近では、X.509蚌明曞を取埗する方法は2぀しかありたせんでしたが、時代は倉わり぀぀あり、最近では3぀目の方法がありたす。


  1. 独自の蚌明曞を䜜成しお、自分で眲名したす。 長所-それは無料、短所-蚌明曞はあなたず、せいぜいあなたの組織によっおのみ受け入れられたす。

    信頌されおいたせん
  2. CAから蚌明曞を賌入する 䞊蚘のさたざたな特性ず機胜に応じお費甚がかかりたす。
  3. 無料のLetsEncrypt蚌明曞を入手しおください。最も単玔なDV蚌明曞のみが利甚可胜です。

最初のシナリオでは、いく぀かのコマンドで十分であり、2回起きないように、 楕円曲線アルゎリズムを䜿甚しお蚌明曞を䜜成したす。 最初のステップは、秘密鍵を䜜成するこずです。 楕円曲線アルゎリズムを䜿甚した暗号化は、CPUサむクルたたはキヌの長さのバむトで枬定した堎合、 より倧きな消耗をもたらすず考えられおいたす。 ECCサポヌトは、TLS <1.2 では䞀意に定矩されおいたせん 。


 openssl ecparam -name secp521r1 -genkey -param_enc explicit -out private-key.pem 

次に、CSR-蚌明曞眲名芁求を䜜成したす。


 openssl req -new -sha256 -key private.key -out server.csr -days 730 

そしおそれに眲名したす。


 openssl x509 -req -sha256 -days 365 -in server.csr -signkey private.key -out public.crt 

結果は次のコマンドで衚瀺できたす。


 openssl x509 -text -noout -in public.crt 

Opensslには膚倧な数のオプションずコマンドがありたす。 Manペヌゞはあたり䟿利ではありたせん。マニュアルは次のように䜿甚するず䟿利です。


 openssl -help openssl x509 -help openssl s_client -help 

javaナヌティリティkeytoolでもたったく同じこずができたす。


 keytool -genkey -keyalg RSA -alias selfsigned -keystore keystore.jks -storepass password -validity 360 -keysize 2048 

ownerずissuerフィヌルドを芚えおおくために、䞀連の質問が続きたす


 What is your first and last name? What is the name of your organizational unit? What is the name of your organization? What is the name of your City or Locality? What is the name of your State or Province? What is the two-letter country code for this unit? Is CN=Johnnie Walker, OU=Unknown, O=Unknown, L=Moscow, ST=Moscow, C=RU correct? 

キヌチェヌンを独自の圢匏からPKCS12に倉換したす。


 keytool -importkeystore -srckeystore keystore.jks -destkeystore keystore.jks -deststoretype pkcs12 

結果を芋おみたしょう


keytool -list -v -alias selfsigned -storepass password -keystore keystore.jks
 Alias name: selfsigned Creation date: 20.01.2018 Entry type: PrivateKeyEntry Certificate chain length: 1 Certificate[1]: Owner: CN=Johnnie Walker, OU=Unknown, O=Unknown, L=Moscow, ST=Moscow, C=RU Issuer: CN=Johnnie Walker, OU=Unknown, O=Unknown, L=Moscow, ST=Moscow, C=RU Serial number: 1f170cb9 Valid from: Sat Jan 20 18:33:42 MSK 2018 until: Tue Jan 15 18:33:42 MSK 2019 Certificate fingerprints: MD5: B3:E9:92:87:13:71:2D:36:60:AD:B5:1F:24:16:51:05 SHA1: 26:08:39:19:31:53:C5:43:1E:ED:2E:78:36:43:54:9B:EA:D4:EF:9A SHA256: FD:42:C9:6D:F6:2A:F1:A3:BC:24:EA:34:DC:12:02:69:86:39:F1:FC:1B:64:07:FD:E1:02:57:64:D1:55:02:3D Signature algorithm name: SHA256withRSA Subject Public Key Algorithm: 2048-bit RSA key Version: 3 Extensions: #1: ObjectId: 2.5.29.14 Criticality=false SubjectKeyIdentifier [ KeyIdentifier [ 0000: 30 95 58 E3 9E 76 1D FB 92 44 9D 95 47 94 E4 97 0.X..v...D..G... 0010: C8 1E F1 92 .... ] ] 

ObjectId: 2.5.29.14の倀は、 RFC 3280によるずASN.1の定矩に察応し、垞にnon-criticalではありたせん。 同様に、X.509蚌明曞に存圚する他のObjectId意味ず可胜な倀を芋぀けるこずができたす。


 subjectKeyIdentifier EXTENSION ::= { SYNTAX SubjectKeyIdentifier IDENTIFIED BY id-ce-subjectKeyIdentifier } SubjectKeyIdentifier ::= KeyIdentifier 

Letsencrypt


X.509 LetsEncrypt蚌明曞は無料で入手できたす。りェブサむトにアクセスする必芁もなく、 certbotむンストヌルするcertbotです。


 sudo emerge -av certbot # Gentoo sudo apt-get install certbot -t stretch-backports #Debian sudo dnf install certbot #Fedora sudo certbot certonly --standalone -d example.com -d www.example.com 

シナリオ1-束の䞭から次のものを芋぀ける


蚌明曞バンドル -耇数のX.509蚌明曞を単䞀のファむルに結合したす。ほずんどの堎合、 PEM圢匏です。 バンドルは、SSL / TLSハンドシェむクプロトコルの時点でネットワヌク経由で送信されたす。


信頌チェヌン


ゞュヌス自䜓は、 certificate chain蚌明曞、぀たりcertificate chainを扱うずきに始たりたす。 倚くの堎合、 jksキヌチェヌンの麺類を芋るず、いく぀かのドメむン名の新しい蚌明曞ず叀い蚌明曞が倚数ある堎合に、芪蚌明曞を芋぀ける方法を芋぀けるjksは簡単ではありたせん。


*.novell.comの*.novell.com蚌明曞を怜蚎しおください。 Authority Key Identifier (AKI)拡匵は、バンドル内の叀いもののSubject Key Identifier (SKI)䞀臎する必芁がありたす。


 Certificate Authority Key Identifier Size: 20 Bytes / 160 Bits 51 68 ff 90 af 02 07 75 3c cc d9 65 64 62 a2 12 b8 59 72 3b 

SKI 、 SKI DigiCert蚌明曞には同じ意味がありたす。


 Certificate Subject Key ID Size: 20 Bytes / 160 Bits 51 68 ff 90 af 02 07 75 3c cc d9 65 64 62 a2 12 b8 59 72 3b 

Novell蚌明曞チェヌン


ルヌト蚌明曞AKI = SKI 、およびisCa=true


 Certificate Basic Constraints Critical Is a Certificate Authority 

シナリオ2-subjectAltnName、Lukeを䜿甚する


Wiki、WordPress、CactiなどのWebサヌバヌを䜿甚するアプリケヌションを想像しおください。 httpsアクセスを構成し、自分で蚌明曞を賌入たたは生成しお眲名したした。 すべお正垞に動䜜するはずですが、緑色のロックはただありたせん。 ブラりザヌFQDNサヌバヌのFQDNアドレスバヌにリストされおいるhostnameが䞀臎しないため、蚌明曞が間違った蜂によっお準備されたず疑っおいたす。 DNSサヌバヌがmars.domain.comをmars.domain.com 、Webサヌバヌがvenus.domain.com構成されおいるこずが時々起こりたす。


管理者が完璧䞻矩のために乗車以倖に必芁な堎合、圌はチェッカヌも必芁です-切望された緑色のロック、そしおsubjectAltNameを定矩するこずによっおX.509蚌明曞をやり盎す必芁がありたす。


openssl.cnfを開き、 reqセクションに次の行を远加したす。


 [ alternate_names ] DNS.1 = example.com DNS.2 = www.example.com DNS.3 = mail.example.com DNS.4 = ftp.example.com 

次に、 [ v3_ca ]セクションで指定したす。


 subjectAltName = @alternate_names 

そしお、すべおが通垞どおりに行われ、秘密鍵を䜜成しお蚌明曞に眲名したす。


 openssl genrsa -out private.key 3072 openssl req -new -x509 -key private.key -sha256 -out certificate.pem -days 730 

䜿甚材料


Source: https://habr.com/ru/post/J346798/


All Articles