要配置OpenSSL以使用客戶端證書進行身份驗證,您需要執行以下步驟:
首先,您需要為客戶端生成一個證書和一個私鑰。您可以使用以下命令生成自簽名證書:
openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout client.key -out client.crt -subj "/CN=client.example.com"
這將生成一個名為client.key的私鑰文件和一個名為client.crt的證書文件。
要將客戶端證書添加到受信任的證書頒發機構,您需要將其添加到服務器的CA證書存儲中。這可以通過將客戶端證書追加到服務器的CA證書文件來實現:
cat client.crt >> ca.crt
要配置服務器以使用客戶端證書認證,您需要編輯服務器的OpenSSL配置文件(通常位于/etc/ssl/openssl.cnf或/etc/ssl/ssl.conf)。在配置文件中,找到或添加以下部分:
[req]
default_bits = 2048
prompt = no
default_md = sha256
distinguished_name = dn
[dn]
C=US
ST=YourState
L=YourCity
O=YourOrganization
OU=YourUnit
CN=client.example.com
[server]
cert = server.crt
key = server.key
cafile = ca.crt
verify_return_error = yes
client_ca_dir = client_certs
client_cert_verify = yes
在這個例子中,我們指定了服務器證書(server.crt)和私鑰(server.key),以及CA證書文件(ca.crt)。我們還啟用了客戶端證書驗證,并將客戶端證書存儲在client_certs目錄中。
將客戶端證書復制到服務器上的client_certs目錄中:
cp client.crt /etc/ssl/client_certs/
保存配置文件的更改并重啟服務器以使更改生效。這將取決于您的服務器類型和配置。對于Apache,您可以使用以下命令:
sudo systemctl restart apache2
對于Nginx,您可以使用以下命令:
sudo systemctl restart nginx
現在,服務器已配置為使用客戶端證書進行身份驗證。當客戶端嘗試連接到服務器時,它需要提供有效的客戶端證書,否則連接將被拒絕。