Bitnami MariaDB 11.4容器配置SSL后启动失败求助
MariaDB 11.4 SSL配置变化及自签名SSL容器部署方案
一、MariaDB 11.4的SSL配置核心变化
- 参数校验逻辑收紧:11.4版本对SSL相关参数的有效性校验更严格,若指定的
ssl_cert、ssl_key等文件路径错误或容器内运行用户无读取权限,服务启动后会拒绝未加密连接,健康检查的未加密连接尝试会被持续拒绝,最终触发容器超时退出。而10.11版本对这类错误容忍度更高,会降级允许非SSL连接。 - TLS版本配置语法变更:11.4默认禁用TLS 1.0/1.1,若自定义
tls_version参数时使用旧语法(比如仅写TLSv1.2而非TLSv1.2,TLSv1.3),会导致协议协商失败,引发大量未认证连接中断日志。 - Bitnami镜像路径调整:Bitnami的MariaDB 11.4镜像将SSL证书默认存放路径从
/opt/bitnami/mariadb/conf/certs改为/opt/bitnami/mariadb/certs,自定义配置若仍用旧路径,会导致证书找不到,触发SSL初始化失败。
二、部署带自签名SSL的健康MariaDB 11.4容器步骤
1. 生成自签名证书
确保证书文件权限符合容器内bitnami用户读取要求:
# 生成CA证书 openssl genrsa 2048 > ca-key.pem openssl req -new -x509 -nodes -days 3650 -key ca-key.pem -out ca.pem # 生成服务器证书 openssl req -newkey rsa:2048 -days 3650 -nodes -keyout server-key.pem -out server-req.pem openssl rsa -in server-key.pem -out server-key.pem openssl x509 -req -in server-req.pem -days 3650 -CA ca.pem -CAkey ca-key.pem -set_serial 01 -out server-cert.pem
2. 编写自定义配置文件(my_custom.cnf)
参数路径和语法需匹配11.4版本要求:
[mysqld] # SSL证书路径 ssl_cert=/opt/bitnami/mariadb/certs/server-cert.pem ssl_key=/opt/bitnami/mariadb/certs/server-key.pem ssl_ca=/opt/bitnami/mariadb/certs/ca.pem # 指定兼容的TLS版本 tls_version=TLSv1.2,TLSv1.3 # 可选:强制所有连接使用SSL require_secure_transport=ON
3. Docker部署时的挂载与权限设置
- 单容器部署命令:
docker run -d \ --name mariadb-11.4 \ -e MARIADB_ROOT_PASSWORD=your_password \ -v $(pwd)/my_custom.cnf:/opt/bitnami/mariadb/conf/my_custom.cnf:ro \ -v $(pwd)/ca.pem:/opt/bitnami/mariadb/certs/ca.pem:ro \ -v $(pwd)/server-cert.pem:/opt/bitnami/mariadb/certs/server-cert.pem:ro \ -v $(pwd)/server-key.pem:/opt/bitnami/mariadb/certs/server-key.pem:ro \ bitnami/mariadb:11.4.3
- Docker Compose配置(需指定运行用户确保证书可读取):
services: mariadb: image: bitnami/mariadb:11.4.3 environment: MARIADB_ROOT_PASSWORD: your_password volumes: - ./my_custom.cnf:/opt/bitnami/mariadb/conf/my_custom.cnf:ro - ./ca.pem:/opt/bitnami/mariadb/certs/ca.pem:ro - ./server-cert.pem:/opt/bitnami/mariadb/certs/server-cert.pem:ro - ./server-key.pem:/opt/bitnami/mariadb/certs/server-key.pem:ro user: "1001:1001"
4. 调整健康检查逻辑
若开启require_secure_transport=ON,需修改健康检查为SSL连接:
docker run -d \ --name mariadb-11.4 \ -e MARIADB_ROOT_PASSWORD=your_password \ -v $(pwd)/my_custom.cnf:/opt/bitnami/mariadb/conf/my_custom.cnf:ro \ -v $(pwd)/ca.pem:/opt/bitnami/mariadb/certs/ca.pem:ro \ -v $(pwd)/server-cert.pem:/opt/bitnami/mariadb/certs/server-cert.pem:ro \ -v $(pwd)/server-key.pem:/opt/bitnami/mariadb/certs/server-key.pem:ro \ --health-cmd="mysql -h localhost -u root -p$MARIADB_ROOT_PASSWORD --ssl-mode=REQUIRED -e 'SELECT 1;'" \ --health-interval=5s \ --health-timeout=5s \ bitnami/mariadb:11.4.3
内容的提问来源于stack exchange,提问作者user23327191
相关产品推荐
相关产品推荐

