大道至简,知易行难
广阔天地,大有作为

SSL证书密钥操作知识点小节

1、COMODO
COMODO证书使用的私钥应该是OpenSSL生成的,为Base64编码的明文字符串,未使用密码保护,可以直接用在Nginx中(ssl_certificate_key):

Nginx的ssl_certificate_key使用的是PEM格式

Nginx的ssl_certificate_key使用的是PEM格式

Nginx使用的私钥为PEM格式,为OpenSSL和许多其他SSL工具的标准格式。这种格式被设计用来能够安全地包含在ASCII甚至电子邮件等富文本文档中,使得我们可以简单地通过纯文本编辑器复制和粘贴PEM文件的内容到另一个文档中。
通常,当一个PEM格式的文件在文本编辑器中打开时会包含不同的页眉和页脚,主要包括:
1、BEGIN/END CERTIFICATE REQUEST,CSR(证书签名请求);
2、BEGIN/END RSA PRIVATE KEY,RSA私钥,PKCS#1;
3、BEGIN/END CERTIFICATE,证书;
4、BEGIN/END PRIVATE KEY,不需要密码的私钥,PKCS#8;
5、BEGIN/END ENCRYPTED PRIVATE KEY,需要解密密码的私钥;
例如,如下为申请COMODO证书时使用的私钥:

由于PKCS#1和PKCS#8不同,所以在使用代码解析时需要额外留意。对于PKCS#8格式的密钥,Java可以直接解析:

2、ASN.1与DER与BER
ASN.1(Abstract Syntax Notation One,抽象语法标记)是一种 ISO/ITU-T 标准,描述了一种对数据进行表示、编码、传输和解码的数据格式。它提供了一整套正规的格式用于描述对象的结构,而不管语言上如何执行及这些数据的具体指代,也不用去管到底是什么样的应用程序。X.509证书、PKCS#7数字信封等的结构均可以用ASN.1进行编码。我们可以使用 asn1js 等工具进行解析,例如:

ans1js

ans1js

BER(Basic Encoding Rules,基本编码规则),是ASN.1中最早定义的编码规则,其他编码规则是在BER的基础上添加新的规则构成。BER定义了如何把ASN.1类型的值编码为8bit的字节流,通常每个值不止有一种的BER编码方法。
DER(Distinguished Encoding Rules,可辨别编码规则),是BER的一个子集,对每个ASN.1值只有唯一一种编码方法。
PKCS#8定义了私钥信息语法和加密私钥语法,而X509定义证书通常都会用DER或PEM进行编码存储,在JAVA中使用的是DER。

参考资料:
1、https://baike.baidu.com/item/ASN.1/498523
2、https://baike.baidu.com/item/DER/1810809?fr=aladdin
3、https://blog.csdn.net/hzzhoushaoyu/article/details/8627952

转载时请保留出处,违法转载追究到底:进城务工人员小梅 » SSL证书密钥操作知识点小节

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址