尝试启用加密时出错:
[ERROR] SSL error: Unable to get private key from '/etc/mysql/ssl/nginx.key'
[Warning] Failed to set up SSL because of the following SSL library error: Unable to get private key
Run Code Online (Sandbox Code Playgroud)
/etc/mysql/conf.d/encrypt.cnf:
[mysqld]
ssl-ca=/etc/mysql/ssl/nginx.ca
ssl-cert=/etc/mysql/ssl/nginx.crt
ssl-key=/etc/mysql/ssl/nginx.key
Run Code Online (Sandbox Code Playgroud)
密钥是这样生成的:
openssl req -newkey rsa:4096 -nodes -keyout nginx.key -subj "/C=US/ST=California/L=Sacramento/O=MyOrg/OU=MyDev/CN=MyApp"
Run Code Online (Sandbox Code Playgroud)
openssl 检查得很好。
我尝试更改权限、所有者、文件名、移动到不同的目录、禁用 SELinux(它已经被禁用)、查看 AppArmor 日志(它不会阻止它)、将“BEGIN/END PRIVATE KEY”更改为“BEGIN” /END RSA 私钥'。
它出什么问题了?
我在 DBA 和其他网站上看到,将数据库暴露给 Internet 是一个特别糟糕的主意,但我注意到 PostgreSQL 具有仅 SSL 证书的身份验证。这是否会使将数据库公开到互联网(来自非本地主机连接的仅证书身份验证)更安全,还是建立 VPN 或通过 SSH 等隧道更好?
如果后者更安全,究竟是什么让它更安全?在这方面,我觉得我忽略了一些显而易见的事情。
我之前已经设置了一些数据库,但实际上从未需要设置需要某种远程管理的数据库(在这种情况下,“远程”是指通过 Internet 或 WAN 而不是 LAN)。
我在不同的机器上有一个带有应用程序服务器和数据库的敏感应用程序,在从数据库的情况下,在不同的数据中心。
尽管我相信我的 postgresqls 被配置为始终使用 ssl,但我需要一种方法来仔细检查这一点。
是否有一些简单的方法可以检查所有客户端连接是否确实被迫使用 ssl?
我在我的 SQL Server 上强制加密。我的意图是拒绝任何不使用 SSL 进行连接的客户端连接。我在正确的轨道上吗?
这是我的详细步骤:
我还缺什么吗?
我有一个客户担心最新的 SSL 漏洞POODLE。他们有一个实用程序 ( IIS Crypto 1.4 ),可以在运行它的服务器上禁用 SSL 2.0-3.0。他们在我的服务运行的服务器和远程 SQL Server 上都禁用了 SSL。SQL 连接字符串非常标准:
Server=myServerIPAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;
Run Code Online (Sandbox Code Playgroud)
当我的服务启动时,它尝试执行 Linq to SQL 查询并收到错误:
已成功与服务器建立连接,但在登录前握手期间发生错误。(提供者:TCP 提供者,错误:0 - 远程主机强行关闭了现有连接。)
如果他们在 SQL Server 上重新启用 SSL,它就可以正常工作。我的程序是基于 .NET 3.5 构建的 Windows 服务。此错误的原因是什么,我可以在哪里进行调整以运行我的服务?
编辑:下面是我的程序在尝试加载时吐出的堆栈跟踪
System.Data.SqlClient.SqlException: A connection was successfully established with the server, but then an error occurred during the pre-login handshake. (provider: TCP Provider, error: 0 - An existing connection was forcibly closed by the remote host.)
at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject …Run Code Online (Sandbox Code Playgroud) 我正在尝试确认当前是否设置了强制加密和/或当前连接是否安全。
是否有我可以运行的 SQL 查询来为我提供该信息,或者我是否需要登录机器并从操作系统查询它?
我激活了选项文件中名为“需要安全传输”的复选框,该文件位于 MySQL Workbench 中。
我如何知道 MySQL“需要安全传输”是否正常工作?此时我应该使用命令行吗?
我想创建一个从 MySQL 到 ODBC 驱动程序的非对称 SSL 连接,但不完全知道如何生成密钥和证书(我在这里推荐使用 openSSL:https ://dev.mysql.com/doc/refman /5.6/en/creating-ssl-files-using-openssl.html)。
我一直在关注这篇文章以尝试创建密钥
密钥生成似乎有效,但我不知道密钥存储在何处或如何存储以与 ODBC 驱动程序一起使用。
此外,知道我在服务器主机上生成这些密钥可能会有所帮助。
我正在尝试使用安全 SSL 连接连接到托管在 AWS RDS 上的 PG 实例。我在哪里将公钥存储在 Windows 上以便它自动应用于连接?
请注意,当我打开 PGAdmin 时,它只允许我指定 .crt 和 .key 文件。有没有办法将它指向 .pem 文件?
我下载了这里引用的公钥:http : //docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_PostgreSQL.html#PostgreSQL.Concepts.General.SSL
在 Linux 上,将此密钥放入默认的 OpenSSL 目录是一件简单的事情,postgres 似乎可以检测到它并自行处理其余部分。
在 Windows 上,我还没有弄清楚如何执行此操作或将 .pem 文件存储在何处或如何将 PGAdmin 指向 .pem 文件。
我有三台服务器,其中两台运行 postgres 9.5.3,第三台运行 pgbouncer 1.7.2。
我可以通过 pgbouncer 访问两个 postgresql 实例之一,一切都很完美。其他 postgresql 服务器,我们称之为 P1 不在我的控制之下,我必须使用 ssl 连接,因此它得到了,因此以下行被添加到该服务器 pga_hba.conf
hostssl all all ###.###.###.###/32 md5
Run Code Online (Sandbox Code Playgroud)
我可以使用 psql 从 pgbouncer 服务器连接到 P1,没有任何问题。但是当我通过 pgbouncer 连接到 P1 时,我收到此错误消息
psql: ERROR: no pg_hba.conf entry for host "XXX.XXX.XXX.XXX", user "myuser", database "mydb", SSL off
Run Code Online (Sandbox Code Playgroud)
这是我的 pgbouncer.ini
[databases]
my_database = host=xxx.xxx.xxx.xxxx port=5432 dbname=mydb user=myuser password=mypassword client_encoding='UTF8'
[pgbouncer]
listen_addr = *
listen_port = 5432
auth_type = md5
auth_file = /etc/pgbouncer/userlist.txt
logfile = /var/log/postgresql/pgbouncer.log
pidfile = /var/run/postgresql/pgbouncer.pid
admin_users = rms_admin
pool_mode …Run Code Online (Sandbox Code Playgroud) ssl ×10
postgresql ×4
mysql ×3
sql-server ×3
amazon-rds ×1
aws ×1
command-line ×1
connectivity ×1
encryption ×1
mysql-5.6 ×1
odbc ×1
pgbouncer ×1
remote ×1
ubuntu ×1