温馨提示×

OpenSSL如何配置Ubuntu数据库安全

小樊
47
2025-08-20 02:12:38
栏目: 云计算

以下是使用OpenSSL配置Ubuntu数据库安全的步骤,以MySQL和PostgreSQL为例:

一、安装OpenSSL

sudo apt update && sudo apt install openssl 

二、生成SSL证书和密钥(自签名,测试环境使用)

1. 生成CA证书

openssl genrsa -out ca-key.pem 2048 openssl req -new -x509 -days 3650 -key ca-key.pem -out ca-cert.pem 

2. 生成服务器证书

openssl req -newkey rsa:2048 -nodes -keyout server-key.pem -out server-req.pem openssl x509 -req -days 3650 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -out server-cert.pem 

3. 生成客户端证书(可选,双向认证需配置)

openssl req -newkey rsa:2048 -nodes -keyout client-key.pem -out client-req.pem openssl x509 -req -days 3650 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -out client-cert.pem 

三、配置数据库服务

1. MySQL配置

  • 移动证书到安全目录
    sudo mkdir -p /etc/mysql/ssl sudo mv ca-cert.pem server-cert.pem server-key.pem /etc/mysql/ssl/ sudo chown -R mysql:mysql /etc/mysql/ssl sudo chmod 600 /etc/mysql/ssl/*.pem 
  • 修改配置文件
    编辑 /etc/mysql/my.cnf,在 [mysqld] 部分添加:
    [mysqld] ssl-ca=/etc/mysql/ssl/ca-cert.pem ssl-cert=/etc/mysql/ssl/server-cert.pem ssl-key=/etc/mysql/ssl/server-key.pem require_secure_transport=ON # 强制使用SSL连接 
  • 重启服务
    sudo systemctl restart mysql 
  • 验证SSL状态
    mysql -u root -p --ssl-ca=/etc/mysql/ssl/ca-cert.pem -e "SHOW VARIABLES LIKE 'have_ssl';" 

2. PostgreSQL配置

  • 移动证书到数据目录
    将证书文件(server.crtserver.keyca.crt)放置到 /var/lib/postgresql/data/ 或指定路径。
  • 修改配置文件
    编辑 postgresql.conf
    ssl = on ssl_cert_file = '/path/to/server.crt' ssl_key_file = '/path/to/server.key' ssl_ca_file = '/path/to/ca.crt' # 可选,双向认证需配置 
    编辑 pg_hba.conf,添加SSL连接规则:
    # 允许SSL连接 hostssl all all 0.0.0.0/0 md5 # 或双向认证(需客户端提供证书) # hostssl all all 0.0.0.0/0 cert clientcert=1 
  • 重启服务
    sudo systemctl restart postgresql 
  • 验证SSL连接
    使用 psql 命令行工具:
    psql "host=localhost port=5432 dbname=postgres user=postgres sslmode=require" 

四、安全增强措施

  1. 禁用不安全的协议和密码套件
    编辑 /etc/ssl/openssl.cnf,在 [system_default_sect] 中设置:
    MinProtocol = TLSv1.2 CipherString = HIGH:!aNULL:!MD5 
  2. 定期更新证书
    设置cron任务自动更新证书,避免过期。
  3. 限制访问权限
    使用防火墙(如 ufw)限制数据库端口(MySQL:3306,PostgreSQL:5432)的访问范围:
    sudo ufw allow from <trusted_ip> to any port 3306 sudo ufw enable 

五、参考来源

  • MySQL SSL配置:
  • PostgreSQL SSL配置:
  • OpenSSL基础操作:

0