问题标签 [ssl-client-authentication]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
mysql - 通过 SSL 使用 Microsoft Power Bi Desktop 连接到 MySQL
我在启用了 SSL 的 CentOS 服务器上运行了一个 MySLQ,它需要 SSL 才能连接到数据库。我使用 OpenSSL 创建了证书和密钥,得到了这些文件:
- 卡佩姆
- ca-key.pem
- 客户证书pem
- 客户端密钥 pem
- 服务器-cert.pem
- 服务器-key.pem
用这个设置 MySQL:
我使用以下方法在 MySLQ 上创建了一个需要 X509 的用户:
使用 MySQL 客户端控制台和提供客户端证书的 MySQL Workbench 进行测试,它工作正常。也适用于通过将证书导入密钥库/信任库来写入/读取数据库的 Java 应用程序。
但是,我无法设置 Power Bi Desktop 版本以连接到 MySQL 服务器。我将证书导入到 Trusted Root Autenticathion Authorities 和 PKCS12 密钥库和信任库(Java 应用程序也使用)。此图像显示证书。它是西班牙语的,但它说它也有密钥,并且由 ca.pem 验证。
这是根据文档,但是有关此的文档非常古老且非常有限。某些流程和/或工具已过时。
https://github.com/Microsoft/PowerBI-visuals/blob/master/tools/CertificateAddWindows.md
https://powerbi.microsoft.com/es-es/blog/ssl-security-error-with-data-source/
但是,没有更多关于如何正确连接的信息(或者我找不到它)。
我在 Power Bi 上收到的消息是“我们无法使用提供的凭据对您进行身份验证。再试一次。”
我必须补充一点,禁用 SSL 允许我使用 Power Bi 连接到数据库,没有任何问题,这是 SSL 不起作用,因为我不知道如何正确提供证书,而且我找不到任何描述过程。
ssl - 在受限 URL 上使用 Reactive Netty 进行相互身份验证
我正在使用 Spring Cloud Gateway 来前端遗留应用程序,以便我们可以开始在幕后迁移东西。应用程序托管的一些 url 是面向公众的,一些是设备限制的。我们控制设备,他们使用浏览器客户端访问受限制的 URL。我们在服务器上使用 tomcat 和 web.xml 中的安全约束为设备限制的 url 设置了相互身份验证:
这与 tomcat 的 server.xml 中的信任库设置相结合(我可以添加它,但我认为这与此对话无关)。
我的目标是在 Spring Cloud Gateway 中实现类似的设置,该设置在后台使用响应式网络,并从遗留应用程序中删除 web.xml 限制。我想我可以将它切换到使用 tomcat 并可能让上面的 web.xml 工作,但我宁愿坚持使用响应式网络的性能优势。
关键目标:
- 只为应用部署一个 api 网关。需要相互身份验证的 url 的数量非常少,所以我宁愿不包括一个完整的其他容器来管理只是为了支持它们。
- 不要在公共 url 上要求客户端证书。
- 要求受限 URL 的有效客户端证书。
我已经设置了相互身份验证,并且可以按预期使用 need/want/none(信任库设置等),但它适用于所有 url。我还设置了 X509 安全限制,这一切似乎都有效。
我想我想要设置的是在基于路径解密 http 请求(以便我可以访问 url)之后使用 SslHandler 进行 tsl 重新协商。但是我在细节上遇到了麻烦,而且我找不到任何包含使用响应式网络进行 tsl 重新协商的 spring-boot 应用程序的示例。任何有关如何在 needClientAuth 设置为 true 的情况下重新协商 ssl 连接的提示都将不胜感激。我认为我需要使会话或其他内容无效,因为当我尝试手动执行此操作时,它似乎正在跳过协商,因为连接已在 ssl 引擎中标记为已协商。
这是我尝试过的迭代之一(这不限制 url,但我计划在我得到这个工作后添加它):
我看到它在调试器中执行重新协商,但它似乎仍然设置为客户端身份验证无(在 application.properties 中设置),而不是重新协商之前代码中设置的需要。我试过sslEngine.getSession().invalidate();
了,但这没有帮助。我还尝试从 ssl 提供程序生成一个新的 ssl 处理程序,但这似乎真的把事情搞砸了。
感谢您提供的任何帮助。
编辑:做更多的研究似乎这种方法不合适,因为 ssl 重新协商在 tsl 1.3 中完全被删除(参见https://security.stackexchange.com/a/230327)。有没有办法执行SSL verify client post handshake
此处描述的等效操作:https ://www.openssl.org/docs/manmaster/man3/SSL_verify_client_post_handshake.html ?
Edit2:看起来这是一个问题,我正在测试的浏览器不支持 TLS1.3 后握手。将服务器设置为只接受 TLS 1.2 似乎可行。不确定是否有更好的方法来解决这个问题,但这是我添加到我的 application.properties 中的:
ssl - HttpUrlConnection 是否用于 Https(仅限 443 端口)URL 以检查它是否处于活动状态?
实际上我的要求只是检查 Url 是否处于活动状态?为此,我使用 HttpUrlConnection 来检查 Url responseCode ...如果我得到响应代码,那么只有我可以说 Url 处于活动状态。但是,如果 Url 仅在 443 端口上并且需要 SSL 证书,则 HttpUrlConnection 如果连接成功发生则返回响应代码,或者如果需要 SSL 证书则返回 SSLHandshakeException,那么我们如何验证 URL 是否处于活动状态。
我怎样才能得到clientCertificate?HttpUrlConnection for Https 需要的 SSL 证书是否仅 Urls 到 Url 响应代码?如果 HttpUrlConnection 不是满足我所有要求的正确工具,是否存在任何替代工具。
java - SSLContext 不使用来自 JVM TrustStore 的证书
我需要向使用 TLS 客户端身份验证的服务器发送请求。为此,我使用我的证书和私钥创建了一个 PKCS12 文件,并将其在 SSLContext 中设置为 KeyManager。
我还使用 keytool 从cacerts
商店中的服务器添加证书,虽然这不起作用,但我使用 InstallCerts 下载我猜所有的中间证书并将它们安装在 cacerts 中。我现在遇到的问题是400 No required SSL certificate was sent
。
我不确定为什么会出现这种情况,根据我的理解,如果TrustManager
设置为 null,它将使用默认的 TrustManager,在这种情况下为:
编辑:我不明白为什么请求失败,因为 TLS 握手已经完成。否则我会得到一些其他错误/异常。
tls1.2 - Apple Watch 中的客户端身份验证请求自动取消
我正在尝试从手表发出 TLS 请求以进行客户端身份验证。
我发现客户端(iwatch)通过调用completionHandler(NSURLSessionAuthChallengeUseCredential,credential)提供客户端证书后立即取消了连接。
我得到的错误是
.
该请求被客户端本身取消......它没有到达服务器。
当我尝试在 iphone 上运行相同的代码时,它成功了。
我尝试从独立和依赖两种类型的手表应用程序运行此 api。
除了这个 TLS 请求之外,所有其他请求在手表上都可以正常工作。
是否有什么特别需要为手表配置以进行客户端身份验证?
Apple Watch 不支持客户端身份验证吗?如果是这样的话,那么它甚至不应该支持像 SecPKS12Import 这样的 api。
java - 连接到服务时,在 tomcat 上运行的应用程序无法通过客户端身份验证
一段时间以来,我一直在用头撞墙,希望有人能解释我做错了什么。我有一个 tomcat 服务器,在该服务器上部署了一个应用程序并正在联系另一个服务。一切正常,直到客户端在其负载均衡器上启用客户端身份验证。Tomcat ->app->lb with client auth -> endpoint 在 jvm 上启用握手调试会返回:
据我所知,这意味着没有找到符合客户端身份验证要求的证书。应用程序和 tomcat 的 SSL 端口有它们定义的密钥库和密钥对,虽然两者都不同,但两者都应该通过,因为客户端身份验证只要求使用某个 CA 签名的证书(它们都是)。在 cacerts 中,我拥有 CA 当局的所有必需证书。我尝试将证书本身放入 cacerts 但结果相同。Tomcat 端口配置:
我尝试通过浏览器连接到端点,果然它要求我提供证书,我为它提供了“server_alias”证书,它完美地工作,所以我不知道为什么它不能与 tomcat 一起工作。
我是一名系统工程师,所以我不知道这是否可能必须在应用程序本身内完成?欢迎任何帮助。
ssl - 如果从服务器维护者处更新 SSL/TLS CA 证书,它将如何在我的设备中更新?
如果 SSL/TLS CA 证书从网站维护者处更新,它将如何在客户端设备中自动更新。
实际上Root CA证书有效期为1或2年,之后服务器维护人员应该去证书颁发机构更新以获得进一步的有效性,那么在这种情况下客户端设备如何更新新的更新证书?
我可以从网站上得到一些答案,比如如果证书过期,我们会收到一些警告消息和数据通信也是纯文本,这样它就容易受到中间人攻击。
谢谢!
azure-web-app-service - Azure 应用程序网关:客户端证书标头?
我一直在解决我的应用程序网关和后面的 Azure Web 应用程序上的一个非常奇怪的问题。
一个月前,我用一个 Web 应用程序设置了我的应用程序网关,一切似乎都运行良好,正确传递了我需要的标头。但是现在我在获取标头“X-ARR-ClientCert”时遇到了问题,该标头应该(并且曾经)存在于每个成功通过身份验证的请求中。请求中不再存在标头...
应用程序网关正在接收 HTTPS 并以 HTTP 将其路由到我的 Web 应用程序。侦听器配置为使用我的 SSL 配置文件,作为我拥有的访问日志的示例:
所以看起来验证是成功的,但我没有收到带有证书的标题。
是否有关于成功验证应用程序网关创建的标头的任何文档?
最后有什么变化吗?
谢谢你的帮助 !
git - Git LFS 和 HTTP 客户端身份验证
我有一个私有 gitlab 实例,在尝试通过 https 访问它时需要客户端身份验证。因此,myserver.com
只有在 Web 浏览器中安装客户端证书时才会起作用。这对于常规使用来说不是问题,因为我只通过 SSH 使用 git。
但是,git LFS 似乎只支持 HTTPS。因此,当我尝试git push
在使用 LFS 的项目中向服务器上传时,它只会尝试使用 HTTPS 上传,而且显然会失败。
这是我的遥控器的样子:
除了在没有 LFS 的情况下删除 git 历史记录和创建新的仓库(或重新配置我的服务器、使用 VPN 等)之外,在这种情况下我还能做些什么吗?git/lfs 是否支持 HTTPS 身份验证的客户端证书?我目前在本地机器上遇到了一个我无法git push
在任何地方使用的私人分叉!
编辑:忽略以下内容,结果是一个错误的 apache 配置文件,与 git 和 gitlab 无关
请注意它是如何将 URL 用作git.myserver.comcoolguy
而不是git.myserver.com/coolguy
或git.myserver.com:coolguy
谢谢