Nginx可以通过ngx_http_ssl_module模块实现双向SSL认证。双向认证需要客户端和服务器都提供证书,并互相验证对方的证书。
实现双向认证需要以下步骤:
- 生成CA证书和私钥,用来签署客户端证书和服务器证书。
openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:4096 -keyout ca.key -out ca.crt
- 生成服务器证书和私钥,使用CA证书签署。
openssl req -out server.csr -newkey rsa:4096 -nodes -keyout server.key
openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 365
- 生成客户端证书和私钥,使用CA证书签署。
openssl req -out client.csr -newkey rsa:4096 -nodes -keyout client.key
openssl x509 -req -in client.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out client.crt -days 365
- 配置Nginx服务器使用双向认证,指定CA证书、服务器证书和私钥。
server {
listen 443 ssl;
ssl_certificate /path/to/server.crt;
ssl_certificate_key /path/to/server.key;
ssl_client_certificate /path/to/ca.crt; # 指定CA证书
ssl_verify_client on; # 启用客户端证书验证
}
- 配置客户端使用双向认证,指定CA证书、客户端证书和私钥。