日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

公钥证书编码解读

發布時間:2025/3/20 编程问答 75 豆豆
生活随笔 收集整理的這篇文章主要介紹了 公钥证书编码解读 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、文件編碼

PEM (Privacy Enhancement Message),定義見?RFC1421
是一種基于 base64 的編碼格式,常見于 linux/unix 下的證書編碼

結構組成?== {header} body {tail}
示例

-----BEGIN PUBLIC KEY----- MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDMYfnvWtC8Id5bPKae5yXSxQTt +Zpul6AnnZWfI2TtIarvjHBFUtXRo96y7hoL4VWOPKGCsRqMFDkrbeUjRrx8iL91 4/srnyf6sh9c8Zk04xEOpK1ypvBz+Ks4uZObtjnnitf0NBGdjMKxveTq+VE7BWUI yQjtQ8mbDOsiLLvh7wIDAQAB -----END PUBLIC KEY-----

DER (Distinguished Encoding Rules) , 定義見維基百科-ASN.1.DER
是來自ASN.1 體系的一種二進制編碼格式,常用于 windows/mac 的證書編碼

編碼方式?== DER uses a pattern of type-length-value triplets

二、公鑰標準

PKCS (Public Key Cryptography Standards),定義見維基百科-PKCS
是一套公鑰密碼學標準,其定義范圍涵蓋了證書簽名、加密算法、填充模式及校驗流程等。

常見PKCS標準

版本里程碑
PKCS#1RFC8017,定義了公鑰私鑰的編碼格式(ASN.1編碼),包括基礎算法及編碼/填充模式、簽名校驗,openssl的默認標準格式
PKCS#3DiffieHellman Key Agreement,定義了DH 密鑰交換標準
PKCS#5RFC8018,基于密碼的加密標準,定義了PBKDF2算法
PKCS#7RFC2315,定義密鑰信息語法標準,PKI體系下的信息簽名及加密標準,是S/MIME的一部分
PKCS#8RFC5958,定義私鑰信息語法標準,用于描述證書密鑰對的通用格式(不限RSA)
PKCS#11定義了密鑰 Token接口,常用于單點登錄/公鑰算法/磁盤加密系統.(硬件加密)
PKCS#12RFC7292,個人信息交換語法標準,定義了私鑰和公鑰證書的存儲方式(支持密碼),常用PFX簡稱,Java Key Store的編碼格式

三、RSA 密鑰

RSA 公鑰編碼

PublicKey-PKCS#1-PEM

-----BEGIN RSA PUBLIC KEY----- BASE64 ENCODED DATA -----END RSA PUBLIC KEY-----

PublicKey-PKCS#1-DER

RSAPublicKey ::= SEQUENCE {modulus INTEGER, -- npublicExponent INTEGER -- e }

PublicKey-PKCS#8-PEM

-----BEGIN PUBLIC KEY----- BASE64 ENCODED DATA -----END PUBLIC KEY-----

PublicKey-PKCS#8-DER

PublicKeyInfo ::= SEQUENCE {algorithm AlgorithmIdentifier,PublicKey BIT STRING }AlgorithmIdentifier ::= SEQUENCE {algorithm OBJECT IDENTIFIER,parameters ANY DEFINED BY algorithm OPTIONAL }

對于RSA公鑰來說,OID就是(1.2.840.113549.1.1.1)

RSA 私鑰編碼

PrivateKey-PKCS#1-PEM

-----BEGIN RSA PRIVATE KEY----- BASE64 ENCODED DATA -----END RSA PRIVATE KEY-----

PrivateKey-PKCS#1-DER

RSAPrivateKey ::= SEQUENCE {version Version,modulus INTEGER, -- npublicExponent INTEGER, -- eprivateExponent INTEGER, -- dprime1 INTEGER, -- p prime2 INTEGER, -- q exponent1 INTEGER, -- d mod (p-1) exponent2 INTEGER, -- d mod (q-1) coefficient INTEGER, -- (inverse of q) mod p otherPrimeInfos OtherPrimeInfos OPTIONAL }

PrivateKey-PKCS#8-PEM

-----BEGIN PRIVATE KEY----- BASE64 ENCODED DATA -----END PRIVATE KEY-----

PrivateKey-PKCS#8-DER

PrivateKeyInfo ::= SEQUENCE {version Version,algorithm AlgorithmIdentifier,PrivateKey OCTET STRING }AlgorithmIdentifier ::= SEQUENCE {algorithm OBJECT IDENTIFIER,parameters ANY DEFINED BY algorithm OPTIONAL }

私鑰文件可采用加密方式存儲,加密后的格式:
EncryptedPrivateKey-PKCS#8-PEM

-----BEGIN ENCRYPTED PRIVATE KEY----- BASE64 ENCODED DATA -----END ENCRYPTED PRIVATE KEY-----

Encrypted-PrivateKey-PKCS#8-DER

EncryptedPrivateKeyInfo ::= SEQUENCE {encryptionAlgorithm EncryptionAlgorithmIdentifier,encryptedData EncryptedData }EncryptionAlgorithmIdentifier ::= AlgorithmIdentifierEncryptedData ::= OCTET STRING

四、證書

X.509 證書,維基百科-X.509,是目前流行的公鑰證書標準。
一個 X.509 證書包含了一個公鑰和對應的實體名(hostname/organization/individual);證書通常由證書認證機構簽名或自簽名;當證書持有者被另外一方信任時(通過公鑰簽名驗證),兩者便可以基于公鑰算法建立安全傳輸通道。

證書結構

Certificate Version Number Serial Number Signature Algorithm ID Issuer Name Validity period Not Before Not After Subject name Subject Public Key Info Public Key Algorithm Subject Public Key Issuer Unique Identifier (optional) Subject Unique Identifier (optional) Extensions (optional) ... Certificate Signature Algorithm Certificate Signature

主要字段

字段描述
版本號指出該證書使用了哪種版本的X.509標準(版本1、版本2或是版本3),版本號會影響證書中的一些特定信息
序列號標識證書的唯一整數,由證書頒發者分配的本證書的唯一標識符
簽名算法標識符用于簽證書的算法標識,由對象標識符加上相關的參數組成,用于說明本證書所用的數字簽名算法。例如,SHA-1-RSA
頒發者名稱證書頒發者的可識別名(DN),是簽發該證書的實體唯一的CA的X.500名字
有效期限證書起始日期和時間以及終止日期和時間
主體名證書持有人的唯一標識符(或稱DN-distinguished name)
公鑰信息包括證書持有人的公鑰、算法
頒發者唯一標識符標識符—證書頒發者的唯一標識符,僅在版本2和版本3中有要求,屬于可選項
主體唯一標識符標識符—證書頒發者的唯一標識符,僅在版本2和版本3中有要求,屬于可選項
頒發者的數字簽名這是使用頒發者私鑰生成的簽名,以確保這個證書在發放之后沒有被撰改過
擴展信息..

擴展字段

字段描述
發行者密鑰標識符證書所含密鑰的唯一標識符,用來區分同一證書擁有者的多對密鑰
密鑰使用一個比特串,指明(限定)證書的公鑰可以完成的功能或服務,如:證書簽名、數據加密等。如果某一證書將 KeyUsage 擴展標記為“極重要”,而且設置為“keyCertSign”,則在 SSL 通信期間該證書出現時將被拒絕,因為該證書擴展表示相關私鑰應只用于簽寫證書,而不應該用于 SSL
CRL分布點指明CRL的分布地點
私鑰的使用期指明證書中與公鑰相聯系的私鑰的使用期限,它也有Not Before和Not After組成。若此項不存在時,公私鑰的使用期是一樣的
證書策略由對象標識符和限定符組成,這些對象標識符說明證書的頒發和使用策略有關
策略映射表明兩個CA域之間的一個或多個策略對象標識符的等價關系,僅在CA證書里存在
主體別名指出證書擁有者的別名,如電子郵件地址、IP地址等,別名是和DN綁定在一起的
頒發者別名指出證書頒發者的別名,如電子郵件地址、IP地址等,但頒發者的DN必須出現在證書的頒發者字段
主體目錄屬性指出證書擁有者的一系列屬性。可以使用這一項來傳遞訪問控制信息

樣例-維基百科證書

Certificate: Data: Version: 3 (0x2) Serial Number: 10:e6:fc:62:b7:41:8a:d5:00:5e:45:b6 Signature Algorithm: sha256WithRSAEncryption Issuer: C=BE, O=GlobalSign nv-sa, CN=GlobalSign Organization Validation CA - SHA256 - G2 Validity Not Before: Nov 21 08:00:00 2016 GMT Not After : Nov 22 07:59:59 2017 GMT Subject: C=US, ST=California, L=San Francisco, O=Wikimedia Foundation, Inc., CN=*.wikipedia.org Subject Public Key Info: Public Key Algorithm: id-ecPublicKey Public-Key: (256 bit) pub: 04:c9:22:69:31:8a:d6:6c:ea:da:c3:7f:2c:ac:a5: af:c0:02:ea:81:cb:65:b9:fd:0c:6d:46:5b:c9:1e: ed:b2:ac:2a:1b:4a:ec:80:7b:e7:1a:51:e0:df:f7: c7:4a:20:7b:91:4b:20:07:21:ce:cf:68:65:8c:c6: 9d:3b:ef:d5:c1 ASN1 OID: prime256v1 X509v3 extensions: X509v3 Key Usage: critical Digital Signature, Key Agreement Authority Information Access: CA Issuers - URI:http://secure.globalsign.com/cacert/gsorganizationvalsha2g2r1.crt OCSP - URI:http://ocsp2.globalsign.com/gsorganizationvalsha2g2 X509v3 Certificate Policies: Policy: 1.3.6.1.4.1.4146.1.20 CPS: https://www.globalsign.com/repository/ Policy: 2.23.140.1.2.2 X509v3 Basic Constraints: CA:FALSE X509v3 CRL Distribution Points: Full Name: URI:http://crl.globalsign.com/gs/gsorganizationvalsha2g2.crl X509v3 Subject Alternative Name: DNS:*.wikipedia.org, DNS:*.m.mediawiki.org, DNS:*.m.wikibooks.org, DNS:*.m.wikidata.org, DNS:*.m.wikimedia.org, DNS:*.m.wikimediafoundation.org, DNS:*.m.wikinews.org, DNS:*.m.wikipedia.org, DNS:*.m.wikiquote.org, DNS:*.m.wikisource.org, DNS:*.m.wikiversity.org, DNS:*.m.wikivoyage.org, DNS:*.m.wiktionary.org, DNS:*.mediawiki.org, DNS:*.planet.wikimedia.org, DNS:*.wikibooks.org, DNS:*.wikidata.org, DNS:*.wikimedia.org, DNS:*.wikimediafoundation.org, DNS:*.wikinews.org, DNS:*.wikiquote.org, DNS:*.wikisource.org, DNS:*.wikiversity.org, DNS:*.wikivoyage.org, DNS:*.wiktionary.org, DNS:*.wmfusercontent.org, DNS:*.zero.wikipedia.org, DNS:mediawiki.org, DNS:w.wiki, DNS:wikibooks.org, DNS:wikidata.org, DNS:wikimedia.org, DNS:wikimediafoundation.org, DNS:wikinews.org, DNS:wikiquote.org, DNS:wikisource.org, DNS:wikiversity.org, DNS:wikivoyage.org, DNS:wiktionary.org, DNS:wmfusercontent.org, DNS:wikipedia.org X509v3 Extended Key Usage: TLS Web Server Authentication, TLS Web Client Authentication X509v3 Subject Key Identifier: 28:2A:26:2A:57:8B:3B:CE:B4:D6:AB:54:EF:D7:38:21:2C:49:5C:36 X509v3 Authority Key Identifier: keyid:96:DE:61:F1:BD:1C:16:29:53:1C:C0:CC:7D:3B:83:

總結

以上是生活随笔為你收集整理的公钥证书编码解读的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。