自签名的证书。p12 文件导入浏览器后,浏览器可以访问。证书配置在 apifox 以后,apifox 也可以访问。但是 uniapp 一直不行。
通过 vue-cli 创建的 uni-app 项目。
uni.configMTLS({
certificates: [{
'host': 'xx.com.cn:5443',
'client': '/static/cert/client.p12',
'clientPassword': '12345678',
'server': []
}],
success(res) {
console.info('mtls success', res);
}
});
success {
"code": 0,
"errMsg": "configMTLS:ok"
}
下边是证书的生成过程。
服务端证书用的是 DigiCert 的免费 ssl 证书。
客户端使用的是自签名证书。
openssl genrsa -des3 -out ca.key 4096
openssl req -new -x509 -days 3650 -key ca.key -out ca.crt
openssl genrsa -des3 -out user.key 4096
openssl req -new -key user.key -out user.csr
openssl x509 -req -days 365 -in user.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out user.crt
openssl pkcs12 -export -out user.p12 -inkey user.key -in user.crt -certfile ca.crt
nginx 配置
# DigiCert 的免费 ssl 证书
ssl_certificate /etc/nginx/certs/api/cert.pem;
ssl_certificate_key /etc/nginx/certs/api/cert.key;
ssl_session_timeout 5m;
ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
ssl_prefer_server_ciphers on;
# 自签名证书
ssl_client_certificate /etc/nginx/certs/api/ca.crt;
ssl_verify_client on;
2 个回复
唐左颖 (作者)
@DCloud_Android_DQQ
能帮我看下吗?
我准备了一个 可访问的 支持 ssl 双向认证,还做了一个 demo 的 uniapp 项目。
p12 导入系统后,浏览器可以访问。uniapp 不行。
1***@qq.com
请问解决了吗
唐左颖 (作者)
并没有
2023-12-19 15:20