481  
查询码:00000936
使用OpenSSL创建自签名SSL证书
作者: 潘帅 于 2021年08月19日 发布在分类 / 人防组 / 人防后端 下,并于 2021年08月24日 编辑
OpenSSL SSL HTTPS

如果你的项目有等级保护测评、国产密码测评的要求,那你就不能错误这篇文章了。等级保护测评和国产密码测评的范围虽然不太一样,但在数据传输安全层面都要求使用https协议,也就是要为Web站点安装SSL证书。


1.需求及选型

需求有两条:

1.支持内网IP地址

我们很多项目都是在内部局域网运行,没有公网IP,更没有域名,因此必须能支持内网IP地址。

2.免费

相当一部分SSL证书需要付费购买,虽然一般不是很贵,成本也需要稍稍考虑一下。免费的SSL证书也有不少地方可以申请,但是能支持内网IP地址的好像没有。

基于这两条需求,考虑使用开源组件OpenSSL创建自签名SSL证书。自己发给自己的证书,可不就想怎么改就怎么改。


2.OpenSSL创建自签名证书过程

2.1安装或更新OpenSSL组件

CentOS操作系统是自带OpenSSL组件,可以选择直接使用或者更新后使用。

查看OpenSSL版本


openssl version
获取最新版本OpenSSL



wget https://www.openssl.org/sources/openssl-1.1.1k.tar.gz
解压后进行配置,升级到最新版本



Windows操作系统可以安装OpenSSL for Windows。

2.2 创建证书配置文件

创建一个后缀为cnf的配置文件,名称随便起,但是要记得,后面会用到。


[req]
distinguished_name = req_distinguished_name
encrypt_key = no
req_extensions = req_ext

[req_distinguished_name]
countryName = CN
countryName_default = US
stateOrProvinceName = HuNan
stateOrProvinceName_default = HuNan
localityName = ChangSha
localityName_default = ChangSha
organizationalUnitName  = HNRF
organizationalUnitName_default  = HNRF
commonName = www.hunanszrf.com
commonName_max  = 64

[req_ext]
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = @alt_names

[alt_names]
DNS.1 = www.hunanszrf.com
DNS.2 = *.hunanszrf.com
DNS.3 = njrgrj.imwork.net
IP.1 = 192.168.199.86
IP.2 = 192.168.199.189
IP.3 = 113.246.57.49

其中req_distinguished_name项内是证书的基本信息,alt_names是可以使用证书的域名和IP地址,可以填写多个。

2.3 创建自签名SSL证书

总体过程是先创建一个私钥,然后通过私钥创建一系列证书。

下面是在CentOS中的执行示例

# 生成ca
openssl genrsa -out ca.key 2048
openssl req -new -key ca.key -out ca.csr -config san.cnf -extensions req_ext
openssl x509 -req -in ca.csr -signkey ca.key -out ca.crt -extfile san.cnf -extensions req_ext
# 生成client
openssl genrsa -out client.key 2048
openssl req -new -key client.key -out client.csr -config san.cnf -extensions req_ext
openssl x509 -req -sha256 -extfile v3.ext -CA ca.crt -CAkey ca.key -CAcreateserial -in client.csr -out client.crt
最后生成的是这么一堆文件

粘贴图片

后缀为crt的就是我们需要的证书文件。


2.4安装SSL证书

可以为操作系统或者某个单独的站点安装SSL证书。

3.后续处理

SSL证书创建完、安装完并不是就结束了,开发人员的工作还没结束呢。

目前我们采用的是前后端分离的开发方式,SSL证书一般加在前端站点上,这就要求所有的请求都必须是https协议的,也就是前端的调用、后端的接口提供都需要在代码中改成https形式。





 推荐知识

 历史版本

修改日期 修改人 备注
2021-08-24 13:47:42[当前版本] 潘帅 1.2
2021-08-19 07:12:23 潘帅 1.0

 附件

附件类型

PNGPNG

预览图

知识分享平台 -V 4.8.7 -wcp