前言:此次是从win本地创建一个ssl的自签证书,上传到服务器进行ng配置使用

下面开始正式操作:

下载安装openssl

使用Git Bash 自带的 openssl 也可以。

openssl下载地址:https://slproweb.com/products/Win32OpenSSL.html

img

安装过程省略,一直下一步就OK了。

在系统环境变量的Path中添加openssl的路径:win+R ,输入:sysdm.cpl,确认进入系统属性–>选择高级–>环境变量–>系统变量,找到Path,新建一条把刚刚下载的openssl的bin目录添加进去。

img

最后CMD,使用:openssl -v 验证是否安装成功。显示刚下载安装的版本号即安装成功。

img

创建配置文件

准备一个配置文件,支持 IP SAN 扩展,否则浏览器会提示证书不匹配。

  1. 新建一个 openssl-san.cnf 的配置文件,内容可以参考如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 主配置段
[req]
default_bits = 2048 # 密钥长度为 2048 位,RSA 推荐最低值
prompt = no # 不提示用户输入 DN 信息(使用配置文件里的 [dn] 段)
default_md = sha256 # 使用的摘要算法(hash)为 SHA-256,适合现代加密要求
distinguished_name = dn # 使用哪个 section 填写证书中的主题信息,这里指向 [dn]
req_extensions = req_ext # 添加请求扩展信息(如 SAN),用于生成 CSR 时使用的扩展
# Distinguished Name 主题名称
[dn]
C = CN # 国家(Country),CN 表示中国
ST = Beijing # 省份(State)
L = Beijing # 地区/城市(Locality)
O = MyOrg # 组织(Organization)
OU = MyDept # 部门(Organizational Unit)
CN = 110.40.141.187 # 公共名称(Common Name),通常是域名或 IP
# 定义 CSR 中的扩展字段(extensions)
[req_ext]
subjectAltName = @alt_names # 指定证书可以合法使用的域名或 IP 地址。
# subjectAltName(SAN)扩展配置
[alt_names]
IP.1 = 110.40.141.187 # 需要配置的ip地址,当然也可以域名 DNS.1 = example.com

生成私钥和证书

1
2
3
4
5
6
7
8
# 生成私钥
openssl genrsa -out server.key 2048

# 生成证书签名请求(CSR),基于配置文件 openssl-san.cnf
openssl req -new -key server.key -out server.csr -config openssl-san.cnf

# 生成自签证书,-days 365 有效期365天,带 SAN 扩展
openssl x509 -req -in server.csr -signkey server.key -out server.crt -days 365 -extensions req_ext -extfile openssl-san.cnf

OK,现在你就可以得到:

  • server.key 私钥
  • server.crt 证书

配置你的服务器

下面以ng为例

  1. 把私钥和证书这两个文件上传服务器存放ssl证书的文件夹下例如:/data/ssl/ 。

img

  1. 进入ng配置文件,添加如下验证配置:

img

  1. 使用nginx -t 验证ng配置文件正确,然后 nginx -s reload 重启ng

img

  1. 浏览器访问: https://110.40.141.187:8443,会提示不是私密链接,继续访问即可,这是因为不是CA认证机构颁发的证书,不被信任。会直接下载一个文件,打开显示 :hello https。配置成功!

img

  1. 导入自签证书到客户端信任的步骤,这样浏览器就不会跳出该警告。

win系统

  • 双击 server.crt 证书文件
  • 点击 “安装证书”
  • 选择「本地计算机」(需要管理员权限)
  • 存储位置选为「受信任的根证书颁发机构」
  • 完成导入后,重启浏览器即可

macOS 系统

  • 打开「钥匙串访问」
  • 拖拽 server.crt 证书到 系统 –> 证书
  • 双击导入的证书,展开信任选项
  • 将「使用此证书时」设为「始终信任」
  • 输入管理员密码完成操作

写在最后

特别鸣谢:https://zhaoruochen.com,提供的硬件环境支持!!!