前言
局域网想使用PWA应用必须要使用https请求,因为服务器在局域网中,所以无法申请正常的证书,通过自签证书解决问题
具体操作
大多Linux操作系统都自带OpenSSL,为了方便快速,直接在Windows通过wsl安装Linux系统
开始操作!
1. 生成自签根 CA 证书 (ca.crt
) 的命令
这个证书将作为您局域网内所有其他证书的信任根。
# 生成 CA 私钥
openssl genrsa -out ca.key 2048
# 生成 CA 证书 (ca.crt),用于签署其他证书
# C: 中国, ST: 广东, L: 深圳, O: qodes, OU: it, CN: MyRootCA, emailAddress: qodes@qq.com
# 有效期 15 年 (15 * 365 = 5475 天)
openssl req -x509 -new -nodes -key ca.key -sha256 -days 5475 -out ca.crt \
-subj "/C=CN/ST=广东/L=深圳/O=qodes/OU=it/CN=MyRootCA/emailAddress=qodes@qq.com"
2. 生成服务器证书 (server.crt
) 的命令
这个证书将用于您的 Nginx 服务器,并包含您指定的 IP 地址。
首先,我们需要创建一个配置文件 (server.cnf
) 来定义 Subject Alternative Name (SAN),因为现代浏览器主要依靠 SAN 来匹配 IP 或域名。
创建 server.cnf
文件:
请将以下内容保存到名为 server.cnf
的文件中:
[req]
distinguished_name = req_distinguished_name
req_extensions = v3_req
prompt = no
[req_distinguished_name]
C = CN
ST = 广东
L = 深圳
O = qodes
OU = it
CN = 192.168.0.145 # Common Name 也设为IP,但SAN更重要
emailAddress = qodes@qq.com
[v3_req]
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[alt_names]
IP.1 = 192.168.0.145 # 明确将IP地址添加到SAN
然后,运行以下命令生成服务器证书:
# 生成服务器私钥
openssl genrsa -out server.key 2048
# 生成服务器证书签名请求 (CSR),使用上面创建的 server.cnf 文件
openssl req -new -key server.key -out server.csr -config server.cnf
# 使用之前生成的 MyRootCA (ca.crt) 签署服务器证书 (server.crt)
# 有效期 15 年
openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 5475 -sha256 -extfile server.cnf -extensions v3_req
完成以上步骤后,您将获得三个重要文件:
ca.key
:您的 CA 私钥 (请妥善保管,切勿泄露)。ca.crt
:您的 CA 证书 (需要安装到所有客户端设备上)。server.key
:您的服务器私钥 (放置在 Nginx 服务器上)。server.crt
:您的服务器证书 (放置在 Nginx 服务器上)。
部署与使用:
将
server.key
和server.crt
配置到您的 Nginx 服务器。将
ca.crt
导入到所有需要访问该网页的电脑和手机设备的“受信任的根证书颁发机构”中。
这样,您就可以通过 https://192.168.0.145
安全地访问您的网页了。