溫馨提示×

OpenSSL如何配置Ubuntu數據庫安全

小樊
38
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.crt、server.key、ca.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
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女