我想知道以下步骤是否足以保护我的云服务,也就是说非授权用户无法使用我的网络应用程序?
换句话说,是否有可能绕过这种保护?
所以步骤是:
创建证书颁发机构根(代表此服务器)
组织和通用名称:此服务器 CA 的一些人工标识符。
openssl genrsa -des3 -out ca.key 4096
openssl req -new -x509 -days 365 -key ca.key -out ca.crt
创建客户端密钥和 CSR
组织和通用名称 = 人名
openssl genrsa -des3 -out client.key 4096
openssl req -new -key client.key -out client.csr
# self-signed
openssl x509 -req -days 365 -in client.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out client.crt
将客户端密钥转换为 PKCS
这样它就可以安装在大多数浏览器中。
openssl pkcs12 -export -clcerts -in client.crt -inkey client.key -out client.p12
将客户端密钥转换为(组合)PEM
将 client.crt 和 client.key 组合成单个 PEM 文件,用于使用 openssl 的程序。
openssl pkcs12 -in client.p12 -out client.pem -clcerts
在客户端设备(操作系统或浏览器)上安装客户端密钥
使用客户端.p12。实际说明有所不同。在 nginx 上安装 CA 证书
这样 Web 服务器就知道根据内部 CA 证书请求(并验证)用户的客户端密钥。
ssl_client_certificate /path/to/ca.crt;
ssl_verify_client optional; # or `on` if you require client key
我的虚拟主机如下所示:
SSLVerifyClient require
SSLVerifyDepth 1
SSLCACertificateFile "cert/ca.crt"
有什么建议吗?