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 | 电子邮件 |
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.crt
和 uhttpd_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。选择当前用户,自定义证书安装位置:受信任的根证书颁发机构。