标签: ssl-client-authentication

在Tomcat中读出传入证书

我使用带有客户端身份验证的tomcat http连接器.如果客户端启动与我的服务器的新连接并发送其证书,我是否可以获取证书并从我的java代码中读取传入证书的公用名.如果有,怎么样?

谢谢阿迪

java ssl tomcat certificate ssl-client-authentication

10
推荐指数
1
解决办法
1万
查看次数

android 可以签署 http/https 调用,以唯一标识执行请求的应用程序吗?

比如说,应用程序的 CORS。嗯,不是一回事,但是...

假设我已经上传了一个应用程序到 Play 商店,现在我希望我的服务器只接受来自这个应用程序的连接。

我该怎么做?

我对操作系统的期望是一些过程,例如向我的 http 请求添加几个标头,指定市场中应用程序的 id,并使用 android 链或相应市场中的签名对整个请求进行签名CA证书链-. 然后我的服务器可以验证请求是否来自正确的应用程序。

另外,操作系统可以添加一些经过认证的硬件信息,因此如果应用程序在模拟器中运行,我也可以拒绝服务。

当然,另一种方法可能是在应用程序中包含一个“秘密”,但它总是可以通过反编译进行逆向工程,不是吗?或者是否有一些与 Play 商店相关联的密钥库可用于在向服务器发出 https 请求期间提供此机密?

第三种方法可能是使用 OAuth 登录的 azp 字段,但它也可能被反编译破坏,而且它会强制用户登录。

security authentication android ssl-client-authentication

8
推荐指数
2
解决办法
937
查看次数

如何使用Traefik和Kubernetes启用客户端证书认证?

我一直在Kubernetes集群上使用Traefik进行自动化https,并且运行良好!现在,我实际上想在Traefik级别禁用终止,只让后端处理https以及客户端证书身份验证。

目前,这是我的设置

配置文件

defaultEntryPoints = ["http","https"]

[entryPoints]
  [entryPoints.http]
  address = ":80"
  compress = true
    [entryPoints.http.redirect]
    entryPoint = "https"
  [entryPoints.https]
  address = ":443"
  compress = true
    [entryPoints.https.tls]
      [[entryPoints.https.tls.certificates]]
      CertFile = "/ssl/tls.crt"
      KeyFile = "/ssl/tls.key"
Run Code Online (Sandbox Code Playgroud)

这是我对Kubernetes的看法

apiVersion: v1
kind: Service
metadata:
  name: backend-svc
spec:
  ports:
  - port: 80
    targetPort: 80
  selector:
    app: backend
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: backend-ingress
  annotations:
    kubernetes.io/ingress.class: traefik
spec:
  tls:
    - secretName: tls-cert
  rules:
  - host: somewhere.com
    http:
      paths:
        backend:
            serviceName: backend-svc
            servicePort: 80
Run Code Online (Sandbox Code Playgroud)

在过去的三个月中,这为我提供了很好的服务,但是通过这种配置,我的后端无法在传入的请求中找到客户端证书。

通常,我从端口80重定向到443升级。现在,当我尝试直接进入443时,会出现内部服务器错误。当我尝试将其添加到入口注释中时 …

kubernetes ssl-client-authentication traefik

7
推荐指数
0
解决办法
1487
查看次数

带有客户端身份验证的GCDAsyncSocket

我一直在使用CocoaAsyncSocket将数据发送到没有SSL的服务器.现在服务器端已经实现了SSL/TLS和客户端身份验证.为了在我们的应用程序中实现这一点,我得到了以下三个文件:

  1. CA-chain.cert.pem
  2. 客户test.cert.pem
  3. 客户test.key.pem

我将文件转换为iOS可读格式,如下所示:

  1. ca-chain.cert.pem到ca-cert.cer
  2. client-test.cert.pem到client_cert.cer
  3. client-test.key.pem到client_key.p12

我已经让它工作到SSL.但是客户端身份验证有问题.

这是我的代码:

didConnectToHost:

- (void)socket:(GCDAsyncSocket *)sock didConnectToHost:(NSString *)host port:(uint16_t)port;
{
    // Configure SSL/TLS settings

    NSMutableDictionary *settings = [NSMutableDictionary dictionaryWithCapacity:3];

    // Allow self-signed certificates
    CFArrayRef certsArray = [self loadCertificates];
    [settings setObject:@0 forKey:GCDAsyncSocketSSLProtocolVersionMax];
    [settings setObject:[NSNumber numberWithBool:YES] forKey:GCDAsyncSocketManuallyEvaluateTrust];
    [settings setObject:(id)CFBridgingRelease(certsArray) forKey:GCDAsyncSocketSSLCertificates];
    [sock startTLS:settings];
}
Run Code Online (Sandbox Code Playgroud)

didReceiveTrust:

- (void)socket:(GCDAsyncSocket *)sock didReceiveTrust:(SecTrustRef)trust completionHandler:(void (^)(BOOL shouldTrustPeer))completionHandler {
    NSString *caCertPath = [[NSBundle mainBundle] pathForResource:@"ca-cert" ofType:@"cer"];
    NSData *caCertData = [NSData dataWithContentsOfFile:caCertPath];

    NSString *clientCertPath = [[NSBundle mainBundle] pathForResource:@"client_cert" ofType:@"cer"];
    NSData …
Run Code Online (Sandbox Code Playgroud)

ios cocoaasyncsocket ssl-client-authentication

7
推荐指数
1
解决办法
699
查看次数

AWS API Gateway MTLS客户端身份验证

每当我为AWS API Gateway搜索SSL的Mutual Auth时,我只能在AWS API Gateway和Backend Services之间找到MTLS.但我希望通过MTLS(客户端身份验证)来保护我的AWS API网关端点.

例如,我有一个支持的服务QueryCustomer,我通过AWS API Gateway代理了该服务.现在我可以在API网关上放置SSL证书,但它通常是单向SSL.我想要实现的是使用客户端身份验证的MTLS,其中AWS API Gateway的API消费者首先必须交换我们在AWS信任库上配置的公共证书,AWS公共证书也将存储在API使用者端.

现在,在握手期间,与其他API网关和应用程序服务器一样,应该有一个属性,其中说明此AWS API网关端点' 需要客户端身份验证 ',以便仅当API使用者的公共证书位于API网关信任库中时才应对其进行身份验证以访问端点,否则只是抛出正常的SSL握手错误.

有人可以建议在AWS API Gateway上是否可以实现这一点?

ssl amazon-web-services aws-api-gateway ssl-client-authentication

7
推荐指数
1
解决办法
1180
查看次数

什么时候需要将“协商客户端证书”设置为“已启用”?

我可以选择支持客户证书。这就是为什么我设置Client certificatesAcceptIIS上。这适用于大多数计算机。但是,在某些计算机上,IIS返回500。可以通过设置Client certificatesIgnore(不是我的选择)或通过设置Negotiate Client CertificateEnabled(可以通过将in netsh http add ...更改DefaultFlags为2来解决)HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP\Parameters\SslBindingInfo\0.0.0.0:443\。在IIS管理器中进行更改?)。虽然(启用)此设置听起来很合理,但仅看名字我就不明白为什么在某些机器上需要它,但在其他机器上不需要...

iis ssl client-certificates iis-7.5 ssl-client-authentication

5
推荐指数
1
解决办法
3203
查看次数

Google Cloud Functions 可以使用 HTTPS 客户端身份验证吗?

我可以将 HTTPS 客户端证书身份验证与 HTTPS 触发的Google Cloud Functions 结合使用吗?

我独立node.js,我会尝试一些类似这样的

var https = require('https'); 
var options = {requestCert: true, rejectUnauthorized: true}; 
https.createServer(options, function (req, res) { 
  // ...
}).listen(1234);
Run Code Online (Sandbox Code Playgroud)

但是由于 Google Cloud Functions(大概)控制着node.js服务器的创建,我目前不清楚如何传递所需的选项。

Google 提供了有关如何使用 (OAuth 2.0) 服务帐户和访问令牌进行身份验证的文档,但我对 HTTPS 客户端证书感兴趣,例如 Web 浏览器也可以提供。

https node.js google-cloud-functions ssl-client-authentication

5
推荐指数
0
解决办法
1496
查看次数

Spring Cloud Gateway转发客户端证书

我正在尝试将 spring-cloud-gateway 用于基于 spring-boot 的服务,该服务使用 ssl 和客户端身份验证。

问题是,通过 api 网关从客户端调用服务总是失败,并显示“certificate_unknown”(没有网关也可以正常工作)。

spring-cloud-gateway 似乎没有将客户端证书转发到后端服务。

有什么想法如何实现这一目标?这是缺少的功能吗?

谢谢

ssl client-certificates spring-cloud ssl-client-authentication api-gateway

5
推荐指数
0
解决办法
2017
查看次数

通过 SSL 使用 Microsoft Power Bi Desktop 连接到 MySQL

我有一个在启用了 SSL 的 CentOS 服务器上运行的 MySLQ,它需要 SSL 才能连接到数据库。我使用 OpenSSL 创建了证书和密钥,并获取了以下文件:

  • 卡佩姆
  • ca-key.pem
  • 客户端证书 PEM
  • 客户端密钥 pem
  • 服务器证书.pem
  • 服务器密钥.pem

使用以下命令设置 MySQL:

ssl-ca=/etc/certs/ca.pem 
ssl-cert=/etc/certs/server-cert.pem
ssl-key=/etc/certs/server-key.pem
bind-address=*
require_secure_transport=ON
Run Code Online (Sandbox Code Playgroud)

我使用以下命令在 MySLQ 上创建了一个需要 X509 的用户:

CREATE USER 'user'@'%' IDENTIFIED BY '<password>' REQUIRE X509;
Run Code Online (Sandbox Code Playgroud)

使用提供客户端证书的 MySQL 客户端控制台和 MySQL Workbench 进行测试,效果良好。还适用于通过将证书导入到 keystores/trustores 来写入/读取数据库的 Java 应用程序。

但是,我无法设置 Power Bi Desktop 版本来连接到 MySQL 服务器。我将证书导入到受信任的根认证机构以及 PKCS12 密钥库和 trustore(也由 Java 应用程序使用)。该图像显示了证书。它是西班牙语的,但它说它也有密钥,并且由 ca.pem 验证。

这是根据文档,但有关此的文档非常旧且非常有限。一些流程和/或工具已经过时。

这是我可以找到的来源: https://github.com/Microsoft/PowerBI-visuals/blob/master/tools/CreateCertificate.md#generate-certificate-manually

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 连接到数据库,没有任何问题,这是 …

mysql ssl ssl-certificate powerbi ssl-client-authentication

5
推荐指数
0
解决办法
1738
查看次数

如何使用 ssl 客户端身份验证来 fetch()?

  • 背景:我正在构建一个chrome 扩展,它发送一个简单的 http 请求,并且应该能够使用 ssl 客户端身份验证。
  • 目标:通过 ssl 客户端身份验证向站点发送获取请求,而用户无需先打开该站点。
  • 到目前为止发生了什么:
    • 仅当我手动打开该网站后,该请求才成功。
    • 尝试按照此处的credentials: 'include'建议使用- 没有解决问题。
    • 我越来越TypeError: failed to fetch
  • Fetch API 文档@Mozilla 似乎没有提到这一点(这里这里

fetch 发送如下:

    fetch(url)
        .then(response => {
            if(!response.ok){
                throw Error("Http request failed");
            }else{
                return response
            }
        })
        .then(response => response.text())
        .then(validate => validate.replace(/\D/g,''))
        .then(count => {
            chrome.action.setBadgeText({text: count});
            if(callback){
                callback();
            }
        })
        .catch(error => {
            console.log(error)
            if(callback){
                callback();
            }
        });
Run Code Online (Sandbox Code Playgroud)

如果您能指导我解决可能出现的问题,我将不胜感激。

由于这个问题在几年左右的时间里都没有得到解决,我在 chromium bug tracker 上打开了一个 bug

javascript authentication fetch google-chrome-extension ssl-client-authentication

5
推荐指数
0
解决办法
3736
查看次数

ELB 可以强制执行 TLS 身份验证吗?

我正在使用AWS::ElasticLoadBalancingV2::LoadBalancer,我们需要开始使用客户端证书(即 mTLS/双向 TLS)。我们的 ELB 正在终止 TLS 连接并拥有服务器端证书。

ELB 本身是否可以配置为强制客户端身份验证(例如通过为其提供证书)?

ssl amazon-web-services amazon-elb ssl-client-authentication

3
推荐指数
1
解决办法
4075
查看次数