局域网环境
- linux 服务器(提供局域网web服务)
- windows 电脑(作为客户端访问局域网内web服务)
目的
- 自签ssl证书,配置局域网https访问
- 我主要是为了解决Web Serial API只能再https下使用的问题
证书相关文件格式说明
- .key:私钥文件
- .pem:根证书公钥
- .crt:域名证书公钥
- .csr:请求域名证书用的证书
Linux服务器配置流程
- 创建证书目录:/root/cert,进入创建 root key
openssl genrsa -des3 -out rootCA.key 2048
根据提示输入密码,后续每次使用此特定密钥生成证书时都需要输入该密码
- 使用生成的密钥来创建新的根SSL证书。并将其保存为rootCA.pem,证书有效期为10年
openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 3650 -out rootCA.pem
提示填写的字段大多都可以直接回车过就行了,只要Common Name字段需要填写内容,这是生成跟证书后导入到系统的证书名称,我填的是Local Certification
Country Name (2 letter code) []:
State or Province Name (full name) []:
Locality Name (eg, city) []:
Organization Name (eg, company) []:
Organizational Unit Name (eg, section) []:
Common Name (eg, fully qualified host name) []:Local Certification
- 3.信任证书
#追加到信任列表
cat rootCA.pem >> /etc/pki/tls/certs/ca-bundle.crt
- 4.创建生成域名ssl证书的前置文件
在这里我生成一个 *.leetest.com 的通配域名证书。
创建一个v3.ext文件,以创建一个X509 v3证书。注意我们指定了subjectAltName选项。
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage=digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName=@alt_names
[alt_names]
DNS.1 = *.leetest.com
- 5.生成域名ssl证书秘钥(leetest.csr、leetest.key)
openssl req -new -sha256 -nodes -out leetest.csr -newkey rsa:2048 -keyout leetest.key
这一步填写域名证书密钥需要的信息,会展示在浏览器的域名证书信息,其中最重要的是Common Name的内容,必须是对应需要https访问的域名的。
Country Name (2 letter code) []:CN
State or Province Name (full name) []:Shanghai
Locality Name (eg, city) []:Shanghai
Organization Name (eg, company) []:leetest
Organizational Unit Name (eg, section) []:leetest
Common Name (eg, fully qualified host name) []:*.leetest.com
- 6.通过我们之前创建的根SSL证书颁发,创建出一个 *.leetest.com 的域名证书。输出是一个名为的证书文件server.crt(对应位置替换为自己的文件路径)
openssl x509 -req -in leetest.csr -CA [rootCA.pem路径] -CAkey [rootCA.key路径] -CAcreateserial -out leetest.crt -days 500 -sha256 -extfile v3.ext
- 7.测试域名相关证书文件已创建成功
#证书(用户局域网windows客户端安装)
leetest.crt
#私钥
leetest.key
- 8.配置nginx(配置后重启nginx生效)
server {
listen 443 ssl;
# 以www.lipten.link域名访问
server_name www.leetest.com
# 配置ssl域名证书
ssl_certificate [ssl证书路径]/leetest.crt;
ssl_certificate_key [ssl证书路径]/leetest.key;
index index.html index.php;
# 反向代理需要被访问的本地服务
location / {
proxy_pass http://localhost:8080;
}
...
}
客户端证书安装
- 下载服务器上生成的leetest.crt证书
-
双击证书开始安装(注意把证书安装到根信任证书列表,否则访问会提示证书不安全)
- 修改客户端host文件,添加测试域名host映射
#局域网服务器ip
192.168.1.12 www.leetest.com
windows修改host参考:https://www.html.cn/system/windows/51281.html