将 SSL 证书添加到 mysql docker 容器
Posted
技术标签:
【中文标题】将 SSL 证书添加到 mysql docker 容器【英文标题】:Adding SSL certificates to a mysql docker container 【发布时间】:2017-04-21 05:36:14 【问题描述】:我正在为一个使用 nginx 和 uwsgi 的 django 应用程序构建一个 docker 容器。对于数据库,应用程序正在使用 mysql,它位于不同的容器中,并且它们都与 docker-compose.yml
文件链接:
version: '2'
services:
mysql:
image: mysql:latest
environment:
-MYSQL_DATABASE: TheDatabase
-MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'
-MYSQL_USER: TheUsername
-MYSQL_PASSWORD: ThePassword
ports:
-"3306:3306"
django:
build: .
volumes:
- .:/app
ports:
- "443:443"
- "8000:8000"
links:
- mysql
我正在使用 SSL 证书,这些证书使用 OpenSSL 自签名并包含在 nginx.conf 文件中。问题是每次我运行容器并尝试以超级用户身份登录时,都会收到以下错误 504 Timed Out。经过大量思考后,我得出结论,问题出在与 mysql 数据库的连接上。我确实进入了 mysql 容器并看到数据库在那里,在检查表后,我看到所有表都已创建。但是,在阅读日志后,我注意到以下行:
[警告] 由于以下 SSL 库错误,无法设置 SSL:SSL 上下文在没有证书和私钥的情况下不可用。
当我使用来自 docker hub 的现成映像时,我应该如何添加 SSL 密钥和证书?这就是我收到 504 Timed out 错误的原因吗?我还收到以下 3 个警告:
[警告] 'db' 条目 'sys mysql.sys@localhost' 在 --skip-name-resolve 模式下被忽略。
[警告] 'proxies_priv' 条目 '@ root@localhost' 在 --skip-name-resolve 模式下被忽略。
[警告] 'tables_priv' 条目 'sys_config mysql.sys@localhost' 在 --skip-name-resolve 模式下被忽略
【问题讨论】:
【参考方案1】:"如果您希望服务器能够自动支持部署 对于安全连接,请使用 mysql_ssl_rsa_setup 实用程序创建 默认 SSL 和 RSA 文件:
shell> mysql_ssl_rsa_setup
有关更多信息,请参阅第 4.4.5 节,“mysql_ssl_rsa_setup - 创建 SSL/RSA 文件”。
mysql_ssl_rsa_setup
只有 MySQL 企业版服务器会在 --initialize 时间为您创建证书。
Courtesy-MySQL
【讨论】:
以上是关于将 SSL 证书添加到 mysql docker 容器的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Docker 容器中向 Tomcat 添加 SSL 证书?