OpenSSL生成HTTPS自签名证书

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OpenSSL生成HTTPS自签名证书相关的知识,希望对你有一定的参考价值。

参考技术A 之前在Windows上有用Perl编译过OpenSSL,不过只是要用它的两个静态库,这次搭一个https server还要用它来生成自签名证书,其中我的配置文件在openssl/apps/openssl.cnf,编译后openssl.exe在openssl/out32/openssl.exe,编译过程可以去网上查,资料还是挺多的。
OpenSSL默认加载配置文件路径是 /usr/local/ssl/openssl.cnf ,因此在开始前需要先设定一下'OPENSSL_CONF'环境变量:

之后就可以根据自己的需求来生成密钥和证书了,关于SSL/TLS原理此处也不多赘述,其中包含了多种非对称加密、对称加密算法,下面将罗列生成CA、server、client三方证书的步骤,但对于只做单向鉴定的情况下client证书是不必要的。

过程都是相同的,先生成1024位的RSA私钥,然后生成证书请求文件(.csr),csr文件经CA私钥签名后生成公钥(即X.509证书),如果需要的话还可以再把它导出为其他格式比如PKCS#12证书(.p12)。

openssl生成https自签名证书

环境:ubuntu 16.04
OpenSSL 1.0.2g 1 Mar 2016

为了方便创建10年的证书,如果你需要更长自行修改3650为自己想要的天数

准备部分
1.创建目录
mkdir -p /tmp/https_crt && cd  /tmp/https_crt
2.创建生成证书时需要的文件夹和文件
 mkdir -p ./demoCA/newcerts
  touch ./demoCA/index.txt
  echo 00 > ./demoCA/serial
  1. 证书应答文件
    cat>https.conf<<EOF
    [ req ]
    default_bits = 4096
    prompt = no
    default_md = sha256
    distinguished_name = dn

[ dn ]
C = CN
ST = yourstate
L = yourcity
O = yourcommpany
OU = yourcommpany
CN = yourdomain.com
EOF

4.生成CA私钥
openssl genrsa -out ca.key 4096
openssl req -new -x509 -days 3650 -key ca.key -out ca.crt -config https.conf

5.生成证书私钥
openssl genrsa -out server.pem 4096

6.制作解密后的证书私钥
openssl rsa -in server.pem -out server.key
7.生成签名请求
openssl req -new -key server.pem -out server.csr -config https.conf
8.用CA 进行签名
openssl ca -policy policy_anything -days 3650 -cert ca.crt -keyfile ca.key -in server.csr -out server.crt<<EOF
y
y
EOF

技术图片

以上是关于OpenSSL生成HTTPS自签名证书的主要内容,如果未能解决你的问题,请参考以下文章

openssl生成https自签名证书

sh 笔记:OpenSSL生成「自签名」证书,配置Nodejs本地HTTPS服务 - 1

使用 openssl 从自签名证书生成的证书签名请求是不是应该显示扩展属性?

sh 笔记:OpenSSL生成「自签名」证书,配置Nodejs本地HTTPS服务 - 12.不需要单独创建文件,重新生成证书的方法

sh 笔记:OpenSSL生成「自签名」证书,配置Nodejs本地HTTPS服务 - 11.通过v3.ext对证书进行重新生成

sh 笔记:OpenSSL生成「自签名」证书,配置Nodejs本地HTTPS服务 - 2.生成.csr