使用OpenSSL生成自签名SSL证书

使用OpenSSL生成自签名SSL证书

第一步:生成私钥

# genra 生成RSA私钥
# -des3 des3算法
# -out server.key 生成的私钥文件名
# 2048 私钥长度
openssl genrsa -des3 -out server.pass.key 2048

输入一个4位以上的密码。

第二步:去除私钥中的密码

openssl rsa -in server.pass.key -out server.key

注意:有密码的私钥是server.pass.key,没有密码的私钥是server.key

第三步:生成CSR(证书签名请求)

# req 生成证书签名请求

# -new 新生成

# -key 私钥文件

# -out 生成的CSR文件

# -subj 生成CSR证书的参数
openssl req -new -key server.key -out server.csr -subj "/C=CN/ST=Guangdong/L=Guangzhou/O=xdevops/OU=xdevops/CN=127.0.0.1"
  • subj参数说明如下:
字段 字段含义 示例
/C= Country 国家 CN
/ST= State or Province 省 Guangdong
/L= Location or City 城市 Guangzhou
/O= Organization 组织或企业 xdevops
/OU= Organization Unit 部门 xdevops
/CN= Common Name 域名或IP 127.0.0.1或者www.test.com

第四步:增加openssl配置

echo subjectAltName = IP:127.0.0.1 > openssl.cnf

如果没有这一步,https客户端双向验证时会出现如下错误:

x509: cannot validate certificate for 127.0.0.1 because it doesn't contain any IP SANs

关键点在于:

  • 如果CN为IP,需要设置subjectAltName = IP:127.0.0.1,此处的“127.0.0.1”和上一步中的CN配置一致。

  • 如果CN为域名,则应该设置为subjectAltName = DNS:www.test.com

第五步:生成自签名SSL证书

# -days 证书有效期

openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt -extfile openssl.cnf

X.509证书包含三个文件:key,csr,crt。

  • key是服务器上的私钥文件,用于对发送给客户端数据的加密,以及对从客户端接收到数据的解密

  • csr是证书签名请求文件,用于提交给证书颁发机构(CA)对证书签名

  • crt是由证书颁发机构(CA)签名后的证书,或者是开发者自签名的证书,包含证书持有人的信息,持有人的公钥,以及签署者的签名等信息

备注:在密码学中,X.509是一个标准,规范了公开秘钥认证、证书吊销列表、授权凭证、凭证路径验证算法等。

在Server中配置

在Server中配置:

  • 声明开启HTTPS (SSL认证)

  • 声明侦听443端口(并确保已在防火墙上打开443端口)

  • 复制已签名的SSL证书和私钥到指定位置,并设置正确的文件权限

  • 配置已签名的SSL证书(.crt)的位置

  • 配置已签名的SSL证书私钥(.key)的位置

  • 配置将HTTP请求都重定向到HTTPS

在浏览器中访问

在浏览器中打开https://<domain_name>来访问。

在Firefox浏览器中可以添加Security Exception来忽略HTTPS错误警告。

Chrome浏览器可以尝试通过导入CA证书的方式来忽略HTTPS错误警告。

注意:Chrome浏览器可能有导入CA证书后仍然无法访问的问题;不同浏览器对自签名SSL证书的检查和限制也有所区别。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容