我使用带有客户端身份验证的tomcat http连接器.如果客户端启动与我的服务器的新连接并发送其证书,我是否可以获取证书并从我的java代码中读取传入证书的公用名.如果有,怎么样?
谢谢阿迪
比如说,应用程序的 CORS。嗯,不是一回事,但是...
假设我已经上传了一个应用程序到 Play 商店,现在我希望我的服务器只接受来自这个应用程序的连接。
我该怎么做?
我对操作系统的期望是一些过程,例如向我的 http 请求添加几个标头,指定市场中应用程序的 id,并使用 android 链或相应市场中的签名对整个请求进行签名CA证书链-. 然后我的服务器可以验证请求是否来自正确的应用程序。
另外,操作系统可以添加一些经过认证的硬件信息,因此如果应用程序在模拟器中运行,我也可以拒绝服务。
当然,另一种方法可能是在应用程序中包含一个“秘密”,但它总是可以通过反编译进行逆向工程,不是吗?或者是否有一些与 Play 商店相关联的密钥库可用于在向服务器发出 https 请求期间提供此机密?
第三种方法可能是使用 OAuth 登录的 azp 字段,但它也可能被反编译破坏,而且它会强制用户登录。
我一直在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时,会出现内部服务器错误。当我尝试将其添加到入口注释中时 …
我一直在使用CocoaAsyncSocket将数据发送到没有SSL的服务器.现在服务器端已经实现了SSL/TLS和客户端身份验证.为了在我们的应用程序中实现这一点,我得到了以下三个文件:
我将文件转换为iOS可读格式,如下所示:
我已经让它工作到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) 每当我为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
我可以选择支持客户证书。这就是为什么我设置Client certificates到AcceptIIS上。这适用于大多数计算机。但是,在某些计算机上,IIS返回500。可以通过设置Client certificates为Ignore(不是我的选择)或通过设置Negotiate Client Certificate为Enabled(可以通过将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
我可以将 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
我正在尝试将 spring-cloud-gateway 用于基于 spring-boot 的服务,该服务使用 ssl 和客户端身份验证。
问题是,通过 api 网关从客户端调用服务总是失败,并显示“certificate_unknown”(没有网关也可以正常工作)。
spring-cloud-gateway 似乎没有将客户端证书转发到后端服务。
有什么想法如何实现这一目标?这是缺少的功能吗?
谢谢
ssl client-certificates spring-cloud ssl-client-authentication api-gateway
我有一个在启用了 SSL 的 CentOS 服务器上运行的 MySLQ,它需要 SSL 才能连接到数据库。我使用 OpenSSL 创建了证书和密钥,并获取了以下文件:
使用以下命令设置 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/CertificateAddWindows.md
https://powerbi.microsoft.com/es-es/blog/ssl-security-error-with-data-source/
然而,关于如何正确连接的更多信息并不多(或者我找不到它)。
我在 Power Bi 上收到的消息是“我们无法使用提供的凭据对您进行身份验证。请重试。”
我必须补充一点,禁用 SSL 允许我使用 Power Bi 连接到数据库,没有任何问题,这是 …
credentials: 'include'建议使用- 没有解决问题。TypeError: failed to fetchfetch 发送如下:
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
我正在使用AWS::ElasticLoadBalancingV2::LoadBalancer,我们需要开始使用客户端证书(即 mTLS/双向 TLS)。我们的 ELB 正在终止 TLS 连接并拥有服务器端证书。
ELB 本身是否可以配置为强制客户端身份验证(例如通过为其提供证书)?
ssl amazon-web-services amazon-elb ssl-client-authentication
ssl ×6
amazon-elb ×1
android ×1
api-gateway ×1
certificate ×1
fetch ×1
https ×1
iis ×1
iis-7.5 ×1
ios ×1
java ×1
javascript ×1
kubernetes ×1
mysql ×1
node.js ×1
powerbi ×1
security ×1
spring-cloud ×1
tomcat ×1
traefik ×1