在Linux系统中,使用OpenSSL配置访问控制通常涉及以下几个方面:
证书颁发机构(CA)配置:
服务器证书和密钥配置:
客户端证书配置:
访问控制列表(ACL)配置:
verify
命令验证客户端证书。以下是一个基本的步骤指南:
mkdir -p /etc/ssl/CA/newcerts
echo 1000 > /etc/ssl/CA/serial
touch /etc/ssl/CA/index.txt
chmod 640 /etc/ssl/CA/index.txt
mkdir /etc/ssl/CA/certs
mkdir /etc/ssl/CA/private
chmod 700 /etc/ssl/CA/private
openssl genpkey -algorithm RSA -out /etc/ssl/CA/private/ca.key 4096
openssl req -x509 -new -nodes -key /etc/ssl/CA/private/ca.key -sha256 -days 1024 -out /etc/ssl/CA/certs/ca.crt -subj "/C=US/ST=State/L=City/O=Organization/CN=CA"
openssl genpkey -algorithm RSA -out server.key 2048
openssl req -new -key server.key -out server.csr -subj "/C=US/ST=State/L=City/O=Organization/CN=server.example.com"
openssl x509 -req -in server.csr -CA /etc/ssl/CA/certs/ca.crt -CAkey /etc/ssl/CA/private/ca.key -CAcreateserial -out server.crt -days 500 -sha256
openssl genpkey -algorithm RSA -out client.key 2048
openssl req -new -key client.key -out client.csr -subj "/C=US/ST=State/L=City/O=Organization/CN=client.example.com"
openssl x509 -req -in client.csr -CA /etc/ssl/CA/certs/ca.crt -CAkey /etc/ssl/CA/private/ca.key -CAcreateserial -out client.crt -days 500 -sha256
编辑服务器配置文件(例如/etc/ssl/openssl.cnf
),添加以下内容:
[ ca ]
default_ca = CA_default
[ CA_default ]
dir = /etc/ssl/CA
certs = $dir/certs
crl_dir = $dir/crl
new_certs_dir = $dir/newcerts
database = $dir/index.txt
serial = $dir/serial
RANDFILE = $dir/private/.rand
[ req ]
default_bits = 2048
distinguished_name = req_distinguished_name
string_mask = utf8only
[ req_distinguished_name ]
countryName = Country Name (2 letter code)
stateOrProvinceName = State or Province Name
localityName = Locality Name
organizationName = Organization Name
commonName = Common Name
[ v3_ca ]
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always,issuer
basicConstraints = critical, CA:true
keyUsage = critical, digitalSignature, cRLSign, keyCertSign
编辑服务器SSL/TLS配置文件(例如/etc/httpd/conf.d/ssl.conf
或/etc/nginx/sites-available/default-ssl
),添加以下内容:
<VirtualHost _default_:443>
SSLEngine on
SSLCertificateFile /etc/ssl/certs/server.crt
SSLCertificateKeyFile /etc/ssl/private/server.key
SSLCACertificateFile /etc/ssl/certs/ca.crt
SSLVerifyClient require
SSLVerifyDepth 10
</VirtualHost>
使用OpenSSL的verify
命令验证客户端证书:
openssl verify -CAfile /etc/ssl/certs/ca.crt client.crt
通过以上步骤,你可以配置OpenSSL以实现访问控制,确保只有持有有效客户端证书的用户才能访问服务器。