æªç©ã¯ãããããã巚倧ãå³ããã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,  
è¡šèšæ³ãšæ§æãå®å
šã«çè§£ããã«ã¯ã 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èšŒææžãå®éã«ã©ã®ãããªãã®ã§ããããèŠãŠã¿ãŸãããã é£ã¹ç© ä¿¡é Œã®é£éã
- ã«ãŒãèšŒææž -ã«ãŒãCAïŒèªèšŒå± ïŒã§äœæãããæ¬¡ã®å±æ§ããããŸã
basicConstraints屿§ãšsubject屿§ã¯åäžã§ããã basicConstraintsæ¡åŒµæ©èœã§ã¯ã basicConstraints屿§ã¯å€TRUEåããŸãã - äžéèšŒææž -ã«ãŒãCAã«ãã£ãŠçœ²åãããŠããªãèšŒææžã®ãããŸããªçšèªã ã«ãŒãèšŒææžããå§ãŸããæçµãµããžã§ã¯ãã®èšŒææžã§çµãããä»»æã®é·ãã®ãã§ãŒã³ã圢æã§ããŸãã
 - ãšã³ããšã³ãã£ãã£èšŒææžã¯ ããã©ã€ããŒãããŒã§ä»ã®äžéèšŒææžã«çœ²åã§ããªããã§ãŒã³å
ã®ãšã³ãã¬ãã«ã®èšŒææžã§ãã
 
çšåºŠã«ãã£ãŠ æ¥åŸé
 é«ã³ã¹ãã§ä¿¡é Œæ§ã®é«ãèšŒææžã¯ã DV ã OV ã EVã® 3ã€ã®ã¿ã€ãã«åããããŸãã
- DV-ãã¡ã€ã³åèšŒææžã®èšŒææžã¯ç°¡åã«å
¥æã§ããŸãã ãããã¯ãèªèšŒå±ãç³è«è
ã«ãã¡ã€ã³åã«å¯Ÿããæš©å©ãããããšã確èªããåŸãèªåçã«å³åº§ã«çºè¡ãããŸãã ã»ãšãã©ã®å Žåãã¡ãã»ãŒãžãéããŠãªã³ã¯ããã©ãã ãã§ãã åœç¶ãã¡ãã»ãŒãžã¯èªèšŒãããã¹ããã¡ã€ã³åãšãšãã«ã¡ãŒã«ããã¯ã¹ã«éä¿¡ãããŸãã
 - OV-èšŒææžã¯ãã§ã«ãã¡ã€ã³åã§ã¯ãªããç³è«è
çµç¹èªäœã®ååã瀺ããŠããŸãã èªåé³å£°åºåã¯ãªããªããŸãããæ°å¶æ¥æ¥ããããŸãã æ€èšŒã®å¯Ÿè±¡ã¯ãç³è«è
ã®çµç¹ã®ååã®
whoisããŒã¿ããŒã¹å
ã®ååšã§ãã å·ã®ç»é²ãšé»è©±çªå·ã®æå¹æ§ã確èªã§ããŸãã - EV-ãããã®èšŒææžãååŸããããšã¯é£ãããå®äŸ¡ã§ã¯ãããŸããã ãããã¯ãã¢ãã¬ã¹ããŒããã«ã®ç·è²ã®ããã¯ã«ããçµç¹ã®ååã§èå¥ã§ããŸãã

 
誰ãåãã§ãããåå²ããŸããã OffhandãYandexãStackOverflow.comãHabrã¯ããããªãã§ãçãç¶ããããŸãã ãã ãããã®ããã«ç ç²ãæãææããã人ã¯ã次ã®èŠä»¶ãæºããå¿
èŠããããŸãã
- çµç¹ã®æ³çãç©ççããã³éçšäžã®æŽ»åã®ç£æ»ã
 - çµç¹ããã¡ã€ã³åã䜿çšããæä»çãªæš©å©ãæã£ãŠããããšã確èªããŠãã ããã
 - çµç¹ããã®ã¿ã€ãã®èšŒææžãçºè¡ããæš©éãæã£ãŠããããšã確èªããŠãã ããã
 
詳现ã«ã€ããŠã¯ã TutHostã®Habrapospãåç
§ããŠãã ããã ãŸããèšŒææžã®subject屿§X.509 EVã«ã¯ãå€jurisdictionOfIncorporationCountryName ã businessCategory ãããã³serialNumberãå«ãŸããŠããŸãã
èšŒææžã®ããããã£ã«ãããèšŒææžã«ã¯æ¬¡ã®çš®é¡ããããŸãã
- ãã«ããã¡ã€ã³èšŒææž -蚌ââææžã¯
subjectAltName SAN屿§ã䜿çšããŠè€æ°ã®ãã¡ã€ã³åã«ãŸãããããšãã§ããŸãã - ãã«ããã¹ãèšŒææž - 
subject屿§ã«CN=example.netã¬ã³ãŒããå«ãŸããå ŽåãDNSãµãŒããŒã¯ãåäžã®ãã¹ãåãè€æ°ã®IPã¢ãã¬ã¹ã«å¯Ÿå¿ã§ããã¿ã€ãã®è€æ°ã®A / AAAAããšãã§ããŸãã ãã®å Žåãåãhostnameæã€X.509èšŒææžããã®ãããªãã¹ãŠã®ããŒãã«æ£åžžã«åŸ©å
ã§ããŸãã - ã¯ã€ã«ãã«ãŒãèšŒææžãã¯ã€ã«ãã«ãŒãèšŒææž -ããã¯ã 
subject屿§ã«CN=*.example.netãšã³ããªãå«ãŸããå Žåã§ãã éåžžã®æ£èŠè¡šçŸãšåãããã«æ©èœããŸããã€ãŸãããã¹ãŠã®*.example.netãµããã¡ã€ã³ã§äœ¿çšã§ããŸãã - èªå®ãããèšŒææž -RFC 3739ã¯ããã®çšèªãåäººèšŒææžãåç
§ãããã®ãšããŠå®çŸ©ãã æ¬§å·é£åé»å眲åæä»€ãåç
§ããŠããŸãã ç¹ã«ãRFCã¯
subject屿§ã«å€ãå«ããããšãèš±å¯ããŠããŸãã
- commonNameïŒCN =ïŒã
 - givenNameïŒGN =ïŒã
 - ä»®å=ã
ãŸãã subjectDirectoryAttributesã¯æ¬¡ã®å€ãå«ãŸããŸãã - dateOfBirth =ã
 - placeOfBirth =ã
 - æ§å¥=ã
 - countryOfCitizenship =ã
 - countryOfResidence =ã
 
 
ãã·ã¢ã§ã¯ã è³æ ŒèšŒææžã® COPã®æŠå¿µã¯ãåœå®¶ãµãŒãã¹ãžã®ã¢ã¯ã»ã¹ã«é¢é£ããæ³åŸã«ãã£ãŠå®çŸ©ãããŠããŸãã COPããã®å人ããŒã¿ã®æœåºã«é¢ããåäºè©©Habrapostãšã®ãªã³ã¯ã«ãããš ã
èšŒææžã¯ã©ãããæ¥ãã®ã§ããïŒ
æè¿ã§ã¯ãX.509èšŒææžãååŸããæ¹æ³ã¯2ã€ãããããŸããã§ããããæä»£ã¯å€ããã€ã€ãããæè¿ã§ã¯3ã€ç®ã®æ¹æ³ããããŸãã
- ç¬èªã®èšŒææžãäœæããŠãèªåã§çœ²åããŸãã é·æ-ããã¯ç¡æãçæ-èšŒææžã¯ããªããšãããããããªãã®çµç¹ã«ãã£ãŠã®ã¿åãå
¥ããããŸãã

 - CAããèšŒææžã賌å
¥ãã äžèšã®ããŸããŸãªç¹æ§ãšæ©èœã«å¿ããŠè²»çšãããããŸãã
 - ç¡æã®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:  
 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 

ã«ãŒãèšŒææž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 
äœ¿çšææ