原文网址:SSL证书--手动生成自签名IP证书-CSDN博客
简介
本文介绍手动生成自签名SSL证书的方法。
目标:用服务器的IP生成一个SSL证书,将证书时间设置的长一些,比如:十年。
本文使用openssl生成一个10年的SSL证书。openssl一般Ubuntu或Centos都会自带,如果没自带,自行安装即可。
这样,别人直接用https://ip的形式即可访问。
1.新建证书配置文件
新建openssl.cfg,内容如下:
[req]
distinguished_name = req_distinguished_name
req_extensions = v3_req
[req_distinguished_name]
countryName = Country Name (2 letter code)
countryName_default = CN
stateOrProvinceName = State or Province Name (full name)
stateOrProvinceName_default = GD
localityName = Locality Name (eg, city)
localityName_default = ShenZhen
organizationalUnitName = Organizational Unit Name (eg, section)
organizationalUnitName_default = organizationalUnitName
commonName = Internet Widgits Ltd
commonName_max = 64
[ v3_req ]
# Extensions to add to a certificate request
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = @alt_names
[alt_names]
# 这里可以指定域名,本处不要写域名,只写下边的ip即可!
#DNS.1 = kb.example.com
#DNS.2 = helpdesk.example.org
#DNS.3 = systems.example.net
# 改成自己的ip
IP.1 = 172.16.24.143
IP.2 = 172.16.24.85
2.生成私钥
本处生成名为test.key的私钥:
openssl genrsa -out test.key 2048
执行完之后,会在当前目录下生成test.key文件
3.生成创建CSR文件
本处生成名为test.csr的文件:
openssl req -new -out test.csr -key test.key -config openssl.cfg
执行后,系统会提示输入组织等信息,可以直接回车,使用默认值。也可以按提示输入,比如:

上边命令提示里有[XXX] ,这是默认配置,在"1.新建证书配置文件"里的openssl.cfg文件可配置。
测试CSR文件是否生成成功,可以使用下面的命令检测是否成功:
openssl req -text -noout -in test.csr
执行后会输出下边这样的结果:
Certificate Request:
Data:
Version: 1 (0x0)
Subject: C = CN, ST = ZJ, L = HangZhou, OU = IT\C3\A9\C2\9B\C2\86\C3\A5\C2\9B\C2\A2, CN = IT
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public-Key: (2048 bit)
Modulus:
00:eb:41:7d:05:ec:a8:5a:e3:a6:d3:fd:88:f6:e2:
ff:5e:52:bf:0b:f5:a4:7b:73:3f:88:24:79:a7:6b:
4.自签名并创建证书
openssl x509 -req -days 3650 -in test.csr -signkey test.key -out test.crt -extensions v3_req -extfile openssl.cfg
执行完之后会在当前目录生成test.crt文件。
上边生成的test.key和test.crt文件都是nginx里要使用的文件。