莱因电博

Li-e.cn

Li Internet Electronic Blog
@rss

OpenWRT 自签 SSL 证书

Individual issuance of SSL certificate

————————————————————

1. Install Build Enviroment

opkg update && opkg install luci-app-uhttpd luci-i18n-uhttpd-zh-cn openssl-util

安装好以后,luci-服务,里面会多出来一个uHTTPd服务。看不到就重启一下。

2. Creat Cert

2.1 Root Cert

mkdir -p /work/ssl-cert

cd /work/ssl-cert

openssl req -x509 -nodes -days 3650 -newkey rsa:2048 \
-subj "/C=CN/ST=Hongkong/L=Hongkong/O=LEEE.TECH" \
-keyout /work/ssl-cert/CA.key \
-out /work/ssl-cert/CA.crt \
-reqexts v3_req -extensions v3_ca
Code Introduce 中文
-days Validity Period 有效期
C Country Name (2 Letter Code) 国家/地区(字母缩写)
ST State or Province Name (Full Name) 州/省
L Locality Name (eg, City) 市/区
O Organizational Unit Name (eg, Company) 组织/公司
OU Organizational Unit Name (eg, Section) 单位/部门
CN Common Name (eg, server FQDN or YOUR name) 服务器域名/证书持有者
EmailAddress Email 电子邮件

2.2 Application Cert

Privite Key:

openssl genrsa -out /work/ssl-cert/uhttpd_lets.key 2048

Request Csr:

openssl req -new -key /work/ssl-cert/uhttpd_lets.key \
-subj "/C=CN/ST=Hongkong/L=Hongkong/O=LEEE.TECH/CN=lets.local" \
-sha256 -out /work/ssl-cert/uhttpd_lets.csr

2.3 Describe File

根据应用证书请求文件创建应用证书,创建应用证书之前需要创建应用证书的扩展描述文件。如果不使用扩展描述文件,那么浏览器中无法授信,会提示证书无效。

编辑 /work/ssl-cert/uhttpd_lets.ext

[ req ]
default_bits        = 1024
distinguished_name  = req_distinguished_name
req_extensions      = san
extensions          = san
[ req_distinguished_name ]
countryName         = CN
stateOrProvinceName = Definesys
localityName        = Definesys
organizationName    = Definesys
[SAN]
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names

[ alt_names ]
IP.1 = 192.168.2.1
IP.2 = 192.168.11.1
IP.3 = 192.168.100.1
IP.4 = 192.168.100.2
IP.4 = 192.168.100.8
DNS.1 = lets.local

PS:如果只有ip,没有自定义域名,把DNS项目去掉。

2.4 Build Cert

Need: csr, ext, CA.crt etc.

openssl x509 -req -days 3650 \
-in /work/ssl-cert/uhttpd_lets.csr \
-CA /work/ssl-cert/CA.crt \
-CAkey /work/ssl-cert/CA.key \
-CAcreateserial -sha256 -out /work/ssl-cert/uhttpd_lets.crt \
-extfile /work/ssl-cert/uhttpd_lets.ext \
-extensions SAN

3. Apply Cert

应用自签名证书,把/work/ssl-cert/目录的 uhttpd_lets.crtuhttpd_lets.key 复制到/etc目录,因为uhttpd的默认签名uhttpd.crt和uhttpd.key 就在这个目录,方便管理。

cp /work/ssl-cert/uhttpd_lets.crt /etc/uhttpd_lets.crt && cp /work/ssl-cert/uhttpd_lets.key /etc/uhttpd_lets.key

然后进入luci界面,打开 “服务” –> “uHTTPd”,把默认的 HTTPS证书 和 HTTPS 私钥 替换成你复制进去的自己生成的。

注意勾选 “将所有HTTP重定向到HTTPS”,运行命令 /etc/init.d/uhttpd restart , 应用更改。

浏览器授信,给电脑安装生成的根证书 CA.crt。选择当前用户,自定义证书安装位置:受信任的根证书颁发机构。

(C) 2019 - 2024 Li-e.cn莱因电博(立网电子博客) | Powered by Vercel , based on Hugo with Gists theme.