openssl version
OpenSSL 1.0.2
安装了OpenSSL的话,接下来开始按步骤生成SSL证书。
第一步:生成私钥
新建/etc/ssl/certs/www.xx.com目录,https也可以和IP地址关联的,为了分类管理,这里建议将目录名和域名或者IP地址一致。进入目录执行:
openssl genrsa -des3 -out server.key 2048
执行会提示输入,此时输入一个4位以上的密码并重复输入即完成生成自签名的SSL证书和私钥
第二步:生成CSR(证书签名请求)
openssl req -new -key server.key -out server.csr -subj "/C=CN/ST=Shandong/L=Qingdao/O=Compa/OU=test/CN=192.168.162.22"
subj参数中C是Country(国家)、ST=是省(State or Province)、L=是城市(Location or City)、
O是(组织或企业Organization)、OU是(部门Organization Unit)、CN是(域名或IP:Common Name)
在执行上面这一步时有可能碰到报错:
Can't load /root/.rnd into RNG
139870213177792:error:2406F079:random number generator:RAND_load_file:Cannot open file:../crypto/rand/randfile.c:88:Filename=/root/.rnd
对应的解决办法是进入/root目录执行命令:
cd /root && openssl rand -writerand .rnd
第三步:去除私钥中的密码
在第1步创建私钥时设定了密码。而这个密码会带来一个副作用,那就是在每次启动Web服务器时,都会要求输入密码,这显然非常不方便。要删除私钥中的密码,操作如下:
openssl rsa -in server.key -out server.key
Enter pass phrase for server.key:
writing RSA key
第四步:生成自签名SSL证书
# -days 证书有效期-天
openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt
Signature ok
subject=C = CN, ST = Shandong, L = Qingdao, O = Compa, OU = test, CN = 192.168.162.22
Getting Private key
X.509证书包含三个文件:key,csr,crt。X.509是密码学一个标准,规范了公开秘钥认证、证书吊销列表、授权凭证、凭证路径验证算法等。我们需要用到的证书文件为:server.crt 和 server.key。三个文件的意义如下:
key是服务器上的私钥文件,用于对发送给客户端数据的加密,以及对从客户端接收到数据的解密
csr是证书签名请求文件,用于提交给证书颁发机构(CA)对证书签名
crt是由证书颁发机构(CA)签名后的证书,或者是开发者自签名的证书,包含证书持有人的信息,持有人的公钥,以及签署者的签名等信息
然后把上面的证书文件放到nginx配置文件的certs文件夹中,注意在docker中使用ssl证书需要记住把证书文件路径放对,即要放到容器中的nginx可以访问的地址中,不然启动nginx就会报错nginx: [emerg] cannot load certificate。使用docker部署https,只需要针对映射到的容器IP进行ssl签名。比如由一个外网IP映射到一个内网服务器IP的443端口,只需要针对这个内网服务器IP进行签名即可。本文地址:http://www.04007.cn/article/1103.html,未经许可,不得转载.
本文地址:http://www.04007.cn/article/1103.html 未经许可,不得转载. 手机访问本页请扫描右下方二维码.
![]() |
![]() |
手机扫码直接打开本页面 |