openssl制作证书

出于安全考虑,在网络上传输的数据应该加密,加密可以采用对称或非对称方式,如果采用非对称方式,常见的做法是RSA公私钥加解密。在实际开发工作中,由于找第三方机构签发证书要花钱,一般采用自签名证书。

下面简单介绍通过openssl工具生成私钥和证书的方法,首先对常见的文件扩展名做说明:

生成CA根证书

流程大致为:生成CA私钥 => 生成CA证书请求 => 自签名得到CA证书

$ openssl genrsa -out ca.key 2048
$ openssl req -new -key ca.key -out ca.csr
$ openssl x509 -req -days 365 -in ca.csr -signkey ca.key -out ca.crt

生成用户证书

流程大致为:生成私钥 => 生成用户证书请求 => 用CA根证书签名得到用户证书

$ openssl genrsa -out server.key 2048
$ openssl req -new -key server.key -out server.csr
$ openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key

如果最后一步会报错,则做以下操作再尝试:

$ mkdir -p ./demoCA/newcerts
$ touch demoCA/index.txt
$ echo "01" >demoCA/serial

如果客户端也需要证书,用同样的方法生成,注意不同的用户在申请证书时Common Name尽量设置成不一样的。

有时需要用到pem格式的证书,将crt和key文件合并即可。

$ cat server.crt server.key >server.pem
$ cat client.crt client.key >client.pem

如果需要显示设置dh参数,可以生成并追加到pem文件中。

$ openssl dhparam -out dh.txt 2048
$ cat dh.txt >>server.pem
Table of Contents