温馨提示×

Linux OpenSSL如何配置访问控制

小樊
61
2025-04-25 22:00:46
栏目: 云计算

在Linux系统中,使用OpenSSL配置访问控制通常涉及以下几个方面:

  1. 证书颁发机构(CA)配置

    • 创建CA目录结构。
    • 生成CA私钥和自签名CA证书。
    • 配置CA证书吊销列表(CRL)。
  2. 服务器证书和密钥配置

    • 生成服务器私钥。
    • 生成服务器证书签名请求(CSR)。
    • 使用CA签发服务器证书。
  3. 客户端证书配置

    • 生成客户端私钥。
    • 生成客户端证书签名请求(CSR)。
    • 使用CA签发客户端证书。
  4. 访问控制列表(ACL)配置

    • 在服务器配置文件中设置客户端证书验证。
    • 使用OpenSSL的verify命令验证客户端证书。

以下是一个基本的步骤指南:

1. 创建CA目录结构

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 

2. 生成CA私钥和自签名CA证书

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" 

3. 生成服务器私钥和CSR

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" 

4. 使用CA签发服务器证书

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 

5. 生成客户端私钥和CSR

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" 

6. 使用CA签发客户端证书

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 

7. 配置服务器访问控制

编辑服务器配置文件(例如/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 

8. 配置服务器SSL/TLS

编辑服务器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> 

9. 验证客户端证书

使用OpenSSL的verify命令验证客户端证书:

openssl verify -CAfile /etc/ssl/certs/ca.crt client.crt 

通过以上步骤,你可以配置OpenSSL以实现访问控制,确保只有持有有效客户端证书的用户才能访问服务器。

0