2015-11-23 32 views
2

我发现,如果你连接到一个Cloud SQL执行SSL上的CommonName服务器的证书中提供的是my-project-123456:myinstance这使得证书未可验证的,作为客户端预计,CN是要么主机名或IP。证书验证云SQL

每一个解决这个问题似乎达“只是禁用验证”,这是不能接受我,因为:

  1. 为什么GCP决定正确地做一切其他,提供CA证书和客户端证书,只是为了放弃身份验证?通过禁用验证,你基本上会说:“我可以在某个时候成为MITMed”。

  2. 什么项目,我们不能朝三暮四,因为与PIPA/HIPAA的验证?

  3. 什么不支持开启关闭验证MySQL客户?例如:在即将发布的5.6.16发行版之前使用mysqlnd的所有PHP 5.6 mysql库。

有没有什么办法让SSL在Cloud SQL上正常工作?

回答

0

其中一个原因没有在服务器证书的通用名称实例的IP地址,是因为这些IP地址可以改变。实例A的IP地址今天可以是明天实例B的IP地址,因为A已被删除,或A决定不再需要IP地址。所以,实例名称被确定为实例的更加独特的标识。

此外,默认情况下,MySQL客户端库有主机名验证禁用。 http://dev.mysql.com/doc/refman/5.7/en/ssl-options.html

关于MITM攻击,中间人攻击云端SQL实例是不可能的,因为服务器证书和每个客户端证书均由独特的自签名CA签名,这些CA从未用于签署多个证书。服务器只信任由其中一个CA签名的证书。每个客户端证书使用独特CA的原因是因为MySQL 5.5不支持证书撤销列表,我们也不想处理CRL,但希望支持删除客户端证书。

我们将考虑支持SSL客户端无法关闭主机名验证方式。但我不能在这方面承诺一个ETA。

Cloud SQL Team。

+0

1.它不是实例名称,它是通过冒号连接的项目和实例名称。如果它只是*实例名称,或者joiner是主机名允许的字符,我可以在DNS或hosts文件中解决这个问题。 2.因为#1每个人*必须禁用证书验证*所以如果某人MITM连接和证书犯规,它不像任何人会被通知。 3.默认情况下,mySQL官方库可能已关闭vaildation,但这样做既不正确也不建议以此方式运行,而第三方客户端库[例如:PHP的mysqlnd]可能会选择* secure *默认值 – Sammitch