问题标签 [mtls]

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.

0 投票
1 回答
840 浏览

python - 使用 Azure 函数 HTTP 触发器的 mTLS?

我正在使用带有 HTTP 触发器的 Python Azure 函数构建身份验证令牌服务器。目标是使用双向 TLS (mTLS) 身份验证。

它的工作方式:

  1. 客户端使用两个标头向 Function 端点发送 http 请求:
  • requestor-id: 用于查找的标识符
  • X-ARR-ClientCert.pem:他们证书的字符串表示
  1. 该函数将在.pem先前共享请求者的数据库中查找
  2. 使用pyOpenSSL,函数将加载两个.pem文件并比较请求证书和检索到的证书:
  • not_valid_before/after日期
  • common name
  • issuer
  • thumbprint
  1. 如果证书的每个属性都匹配,则函数将使用身份验证令牌进行响应,以便在下游数据调用中使用

我的问题是:

  • 这并不是真正的“相互”,因为托管函数代码的服务器没有在握手的任何地方(可见)提供证书。
  • mTLS 握手的服务器端是在其他地方配置的,还是因为 Function 端点是开箱即用的http而“正常工作”?
0 投票
1 回答
166 浏览

security - 为什么在认为不安全的情况下将 localhost 添加到 SAN 列表?

请在证书的 SAN 列表上提问。

目前,我有一个 Web 应用程序,其中启用了 mTLS、双向 TLS、双向 SSL。

我所有的客户都拥有有效的证书集,并且他们都通过了握手并且能够在通过 Web 调用我的服务时获得响应负载。他们都很高兴。

但是,作为开发人员,如果在localhost上运行时 mTLS 处于活动状态,我将无法进入自己的服务。

因此,我的第一反应是要求我的安全团队在 SAN 列表中添加 localhost。

但是,他们告诉我这是不安全的,并且认为添加 localhost 是不好的做法。

我试图在网上查看文档,但没有找到任何具体的或我能理解的东西。

我不想为我的本地主机测试禁用 mTLS。无论如何,我不想通过部署某种不安全的信任来欺骗这个过程。

我的问题:

  • 为什么在 SAN 列表中添加 localhost 作为条目被认为是不好的做法和不安全的?
  • 那么如何测试部署在我的本地主机上的应用程序呢?

谢谢

0 投票
1 回答
126 浏览

istio - istio 操作员:通过文件传递入口 mTLS 证书

我正在尝试通过文件而不是通过秘密将 mTLS 证书传递给 istio 入口网关。Vault init-container 将证书存储在

所以我试图通过这样的补丁删除秘密元素

但它不工作。Doc 说,“对于删除,应该取消设置值。”

istioctl manifest generate 命令仍然包含秘密部分。我还尝试将值设置为“未设置”,但(如预期的那样)最终使用未设置作为秘密名称的文字值。任何指针表示赞赏。

0 投票
0 回答
570 浏览

apache-kafka - 使用 MTLS 配置连接镜像制造商,仅用于目标,纯文本用于源

我正在运行mirror maker 2.0(来自kafka 2.6的二进制文件)并且我的源集群配置为纯文本,而我的目标集群启用了ssl

我已经创建了正确的密钥,并确保第一个连接可以使用以下命令正常工作,

ssl_properties 文件如下,

security.protocol=SSL
ssl.truststore.location=/opt/keys/client.truststore
ssl.truststore.password=123456
ssl.keystore.location=/opt/keys/jacek.keystore
ssl.keystore.password=123456 ssl.key .password=密码

现在,当我尝试运行镜像制造商时,它失败并出现以下错误,镜像制造商配置文件中有类似的配置,如下所示,

错误:

org.apache.kafka.common.errors.TimeoutException:调用(callName=fetchMetadata,deadlineMs=1605011994642,trys=1,nextAllowedTryMs=1605011994743)在 1605011994643 1 次尝试后超时原因:org.apache.kafka.common .errors.TimeoutException:等待节点分配超时。调用:fetchMetadata [2020-11-10 12:40:24,642] INFO App info kafka.admin.client for adminclient-8 未注册(org.apache.kafka.common.utils.AppInfoParser:83)[2020-11-10 12 :40:24,643] INFO [AdminClient clientId=adminclient-8] 元数据更新失败 (org.apache.kafka.clients.admin.internals.AdminMetadataManager:235) org.apache.kafka.common.errors.TimeoutException: Call(callName= fetchMetadata,deadlineMs=1605012024643,trys=1,nextAllowedTryMs=-9223372036854775709)在 9223372036854775807 次尝试后超时 原因:org.apache.kafka.common.errors。TimeoutException:AdminClient 线程已退出。调用:fetchMetadata [2020-11-10 12:40:24,644] INFO Metrics scheduler closed (org.apache.kafka.common.metrics.Metrics:668) [2020-11-10 12:40:24,644] INFO Closing Reporter org .apache.kafka.common.metrics.JmxReporter (org.apache.kafka.common.metrics.Metrics:672) [2020-11-10 12:40:24,644] INFO Metrics 记者关闭 (org.apache.kafka.common. metrics.Metrics:678)[2020-11-10 12:40:24,645] ERROR 由于错误而停止(org.apache.kafka.connect.mirror.MirrorMaker:304)org.apache.kafka.connect.errors.ConnectException:无法连接和描述 Kafka 集群。检查工作人员的代理连接和安全属性。在 org.apache.kafka.connect.util.ConnectUtils.lookupKafkaClusterId(ConnectUtils.java:70) 在 org.apache.kafka.connect.util.ConnectUtils.lookupKafkaClusterId(ConnectUtils.java:70) kafka.common.internals.KafkaFutureImpl$SingleWaiter.await(KafkaFutureImpl.java:89) 在 org.apache.kafka.common.internals.KafkaFutureImpl.get(KafkaFutureImpl.java:260) 在 org.apache.kafka.connect.util。 ConnectUtils.lookupKafkaClusterId(ConnectUtils.java:64) ... 7 更多原因:org.apache.kafka.common.errors.TimeoutException: Call(callName=listNodes, deadlineMs=1605012024641, Trys=1, nextAllowedTryMs=1605012024742) 超时在 1605012024642 尝试 1 次后原因:org.apache.kafka.common.errors.TimeoutException:等待节点分配超时。调用:listNodes apache.kafka.common.errors.TimeoutException:调用(callName=listNodes,deadlineMs=1605012024641,trys=1,nextAllowedTryMs=1605012024742)在 1605012024642 1 次尝试后超时原因:org.apache.kafka.common.errors .TimeoutException:等待节点分配超时。调用:listNodes apache.kafka.common.errors.TimeoutException:调用(callName=listNodes,deadlineMs=1605012024641,trys=1,nextAllowedTryMs=1605012024742)在 1605012024642 1 次尝试后超时原因:org.apache.kafka.common.errors .TimeoutException:等待节点分配超时。调用:listNodes

0 投票
0 回答
322 浏览

c# - 客户端证书在 xamarin.android 中不起作用

我正在尝试在我的 xamarin.android 项目中使用https://github.com/chkr1011/MQTTnet库建立 mtls 连接。在此过程中,我在调用 conResult.Wait(TimeSpan.FromSeconds(60)); 的 Init 方法中遇到了这样的异常;

{MQTTnet.Exceptions.MqttCommunicationException:身份验证失败,请参阅内部异常。---> System.Security.Authentication.AuthenticationException:身份验证失败,请参阅内部异常。---> System.Security.Cryptography.CryptographicException:捕获...} {System.Security.Cryptography.CryptographicException:捕获未处理的异常MonoBtlsSslCtx.ProcessHandshake。---> System.NullReferenceException:对象引用未设置为对象的实例。在 Mono.Btls.MonoBtlsSsl.SetPrivateKey (Mono.Btls....}

这是我的代码:

我有几个选择:

  1. 在 GetCertificate 方法中构造证书可能存在一些问题;
  2. MqttNet 库本身存在问题。我怀疑该库不适用于 xamarin.android 中的证书,因为我发现了这样的主题:https://github.com/xamarin/xamarin-android/issues/4481https://github.com/chkr1011/MQTTnet /问题/883

我尝试以这种方式构造证书,但 xamarin 不支持 rsa.ImportRSAPrivateKey。我得到:System.PlatformNotSupportedException:此平台不支持操作。

0 投票
1 回答
136 浏览

kubernetes - K8S 中服务之间的 mTLS

我想在一个 K8S 命名空间中的服务之间启用 mTLS。我想知道我是否可以在不使用服务网格的情况下做到这一点?我考虑过 cert-manager,但我看到的所有示例都涉及我不需要的 Ingress 资源,因为我的服务没有暴露在集群之外。谢谢

0 投票
1 回答
97 浏览

ssl - IIS Server not sending "Cert Authorities" in CertificationRequest

We configured the IIS server to require client's certificate. While we have made it work, I noticed that the IIS server is sending an Cert Authorities in the CertificationRequest. Is there a configuration in IIS to enable that?

Here is the hand shake messages:

The problem is if the server does not specify which CA is acceptable. The client assume all CAs are acceptable. We have multiple keys in the keystore, so the client will choose the 'first' one, where there is no definition of 'first'.

0 投票
1 回答
53 浏览

identityserver4 - IdentityServer4 Version="4.1.1" MTLS 配置 services.AddAuthentication().AddCertificate 不起作用

Startup.cs 设置有问题,根据我应该添加的文档

但我得到了错误:

“AuthenticationBuilder”不包含“AddCertificate”的定义,并且没有扩展方法“AddCertificate”。

在示例代码设置IdentityServer(HOST)/ConsoleMTLSClient中它可以工作。

0 投票
1 回答
328 浏览

identityserver4 - IdentityServer4 Version=“4.1.1” MTLS,MTLS 认证失败,AuthenticationScheme:证书被禁止

IdentityServer 客户端已注册

和 Samples ConsoleMTLSClient 使用相同的证书。

我解决了 IdentityServer->Kestrel->certificate for sub-domain mtls.* registrationing 的问题,所以我继续前进,但我陷入了新问题

0 投票
1 回答
2344 浏览

java - 以编程方式使用自定义 SSLContext 配置 Spring Boot(对于 mTLS)

问题

以编程方式配置 Spring Boot 以使用我的自定义SSLContext. 并用于 mTLS。

语境

Spring 的文档只提供了一种配置 SSL 的清晰方法(通过application.properties):

但是,此解决方案缺乏深度,因为在某些情况下,我想利用自定义自己的SSLContext. 例如,将 mTLS 配置为不仅信任通过 生成的单个证书keytool,而且信任我的自签名证书和放置在 Java 的默认 TrustStore ( lib/security/cacerts) 中的证书。

当然,我可以使用已经提到的组合它们keytool,但我正在寻找更灵活的方法,因此提供我自己的SSLContext.

Spring 提供了一个关于配置 Web 服务器的部分,它说使用类似TomcatServletWebServerFactoryor的东西ConfigurableServletWebServerFactory,但它们并没有真正深入。

我试过创建一个Component

但无济于事。