在Linux上使用OpenSSL实现客户端证书认证,通常涉及以下几个步骤:
生成CA证书和密钥:
配置服务器以使用客户端证书认证:
配置客户端以使用其证书:
测试连接:
以下是详细步骤:
openssl req -x509 -newkey rsa:4096 -keyout ca.key -out ca.crt -days 3650 -nodes
openssl req -newkey rsa:4096 -keyout server.key -out server.csr -nodes
openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 365
openssl req -newkey rsa:4096 -keyout client.key -out client.csr -nodes
openssl x509 -req -in client.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out client.crt -days 365
假设你使用的是OpenSSL的s_server和s_client进行测试。
创建一个服务器配置文件server.conf:
[req]
default_bits = 2048
prompt = no
default_md = sha256
distinguished_name = dn
x509_extensions = x509_ext
[dn]
C=US
ST=State
L=City
O=Organization
OU=Organizational Unit
CN=server.example.com
[x509_ext]
subjectAltName = @alt_names
[alt_names]
DNS.1 = server.example.com
DNS.2 = localhost
clientAuth = require
启动服务器:
openssl s_server -cert server.crt -key server.key -CAfile ca.crt -verify 5 -accept 4433 -www -tlsextdebug -config server.conf
确保客户端有正确的证书和私钥,并且知道CA证书的位置。
使用客户端连接到服务器并验证认证是否成功:
openssl s_client -connect localhost:4433 -cert client.crt -key client.key -CAfile ca.crt
如果一切配置正确,你应该能够看到服务器和客户端的证书信息,并且连接应该成功。
600。通过以上步骤,你可以在Linux上使用OpenSSL实现客户端证书认证。