OpenSSL自签证书

一、证书标准及文件后缀说明

  • X.509
    X.509 是密码学里公钥证书的格式标准。证书组成结构标准用ASN.1(一种标准的语言)来进行描述。
  • ASN.1
    ASN.1抽象语法标记(Abstract Syntax Notation One) ASN.1是一种 ISO/ITU-T 标准,描述了一种对数据进行表示、编码、传输和解码的数据格式。它提供了一整套正规的格式用于描述对象的结构,而不管语言上如何执行及这些数据的具体指代,也不用去管到底是什么样的应用程序。
  • DER
    DER(Distinguished Encoding Rules,可辨别编码规则)。ASN.1对象的编码是ASN.1标准的重要部分,通常采用的是BER,而DER则是其一个子集。
  • .csr
    这是证书签名请求文件。格式为PKCS#10,该格式在RFC 2986中定义。它包括所请求证书的秘钥详细信息,比如主题、组织、国家、单位等,以及要签名的证书的公共秘钥。CA根据CSR文件提供的信息进行签名后返回签名证书,返回的证书就是公共证书(包含公钥,不包含私钥)。
  • .pem
    定义在RFCs 14211424,这是一个容器格式规范,也许只包含公钥,也许包含完整的签名路径链,包括公钥、私钥、根证书。PEM是Privacy Enhanced Mail的缩写,它是一个失败的保护电子邮件的方法,但是这个容器格式一直在使用。
  • .key
    这是一个PEM格式的文件,只包含证书的私钥。
  • .pkcs12 .pfx .p12
    最初定义在RSA的Public-Key Cryptography Standards,"12"这个版本开始是微软使用,后来定义在 RFC 7292。这是一个密码容器格式,可以包含公钥和私钥证书对。跟.pem文件不同,这个容器格式是加密的。java的keytool工具可以产生这种格式的证书。
  • .der
    ASN.1语法的编码规则之一。.pem文件是.der文件的Base64版本。
  • .cert .cer .crt
    .pem文件的不同格式,也可以是.der文件。这些文件在Windows下可以直接识别,.pem无法识别。
  • .p7b .keystore
    定义在RFC 2315这是Windows用于证书交换的一种格式,java支持该格式,通常用.keystore作为后缀。
  • .crl
    证书吊销列表。

二、自签证书操作

自签证书包括两大步骤,第一步制作根证书,第二部制作应用证书。其中根证书用来签发应用证书。
1.制作根证书

openssl req -newkey rsa:2048  -keyout jianshu.key -x509 -days 36500 -out jianshu-root.pem

通过openssl命令生成jianshu.key(私钥文件)和jianshu-root.pem(根证书文件)。

生成根证书.png

2.生成应用证书私钥

openssl genrsa -aes256 -out app.key 2048
应用私钥.png

3.生成应用证书请求文件

openssl req -new -key app.key -out app-csr.csr
应用证书请求文件.png

4.用根证书签发应用证书

openssl x509 -req -sha256 -days 365 -in app-csr.csr -CA jianshu-root.pem -CAkey jianshu.key -CAcreateserial  -out app-crt.pem
使用根证书签发应用证书.png

如果在windows平台下可以使用以下命令将pem格式的证书转换成windows可识别的证书:

 openssl x509 -inform pem -in app-crt.pem -out app-crt.cer

三、参考资源

X.509
ASN.1
简书上解释ASN.1的文章
DER
serverfault论坛上关于openssl各个文件后缀的解释

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容