在Debian系統上配置OpenSSL客戶端認證,通常涉及以下幾個步驟:
生成客戶端證書和私鑰: 使用OpenSSL生成客戶端證書和私鑰。
openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout client.key -out client.crt -subj "/CN=clientname"
這將生成client.key(客戶端私鑰)和client.crt(客戶端證書)。
配置OpenSSL客戶端:
編輯或創建OpenSSL配置文件(通常是~/.openssl/openssl.cnf),添加客戶端認證相關的配置。
[ req ]
default_bits = 2048
prompt = no
default_md = sha256
req_extensions = req_ext
[ req_distinguished_name ]
countryName = Country Name (2 letter code)
stateOrProvinceName = State or Province Name
localityName = Locality Name
organizationName = Organization Name
organizationalUnitName = Organizational Unit Name
commonName = Common Name
[ req_ext ]
subjectAltName = @alt_names
[ alt_names ]
DNS.1 = example.com
DNS.2 = www.example.com
[ v3_req ]
keyUsage = digitalSignature, nonRepudiation, keyEncipherment
extendedKeyUsage = clientAuth
配置服務器: 如果你在配置服務器(如Apache、Nginx等)以使用客戶端證書認證,需要在服務器配置中指定客戶端證書驗證。
Apache:
在/etc/apache2/sites-available/default-ssl.conf或相應的SSL配置文件中添加以下內容:
SSLVerifyClient require
SSLCACertificateFile /path/to/ca.crt
SSLVerifyDepth 10
Nginx:
在/etc/nginx/sites-available/default或相應的SSL配置文件中添加以下內容:
ssl_client_certificate /path/to/ca.crt;
ssl_verify_client on;
測試客戶端認證: 使用OpenSSL命令行工具測試客戶端認證。
openssl s_client -connect example.com:443 -cert client.crt -key client.key
如果配置正確,服務器將要求客戶端證書認證,并驗證客戶端證書的有效性。
重啟服務: 根據你配置的服務(如Apache、Nginx等),重啟服務以應用更改。
sudo systemctl restart apache2
# 或者
sudo systemctl restart nginx
通過以上步驟,你應該能夠在Debian系統上成功配置OpenSSL客戶端認證。