相关疑难解决方法(0)

SSL服务器套接字需要auth选项

关于SSLServerSocket.setWantClientAuth:
如果设置为true如果客户端选择不发送证书,则协商继续.
此外,我注意到如果客户端发送证书不是信任库的一部分,也会发生这种情况.在这种情况下,协商也不会失败.

那么这个设置的用例是什么?

java sockets security ssl jsse

6
推荐指数
1
解决办法
8737
查看次数

强制SSL客户端套接字发送证书

我正在尝试编写一个客户端(实际上是一个中间件,它是一个实体的客户端,但也充当其他人的服务器).在其客户端容量中,它应该与另一台服务器(VMware的VirtualCenter)通信,并要求它代表它做一些事情.

为了提供更多上下文,VirtualCenter允许应用程序注册为扩展.所述申请可以在注册时注册其证书(setCertificate).之后,应用程序可以使用其证书(loginExtensionByCertificate()方法)登录VirtualCenter ,从而无需存储用户名和密码.但是,为了使其正常工作,客户端(我的应用程序)必须发送证书作为其SSL连接的一部分,即使服务器(VirtualCenter)没有特别要求它.

我正在用Java编写我的应用程序.创建了我自己的密钥管理器,将其连接到我的密钥库并指定要使用的别名.然后初始化我的ssl上下文以使用该密钥管理器.在创建的套接字中,我确实看到他们的SSLContext中有我的密钥管理器.但是,我没有看到密钥管理器被调用来获取证书.出于某种原因,套接字不觉得需要发送证书.

我知道服务器可能会要求客户端提供其证书.在这种情况下,它不会发生.我想知道是否有办法强制创建的套接字提供证书,无论服务器是否要求它.

java vmware ssl

5
推荐指数
2
解决办法
7091
查看次数

.Net 和 Java 之间的 SSL 套接字,具有客户端身份验证

我正在尝试在 .NET 和 Java 之间创建 SSL 套接字服务器/客户端。在这种情况下,我的 SSL 套接字服务器将在 .net 中运行,客户端在 Linux 下以 Java 运行。我的问题是握手期间连接失败,特别是当服务器向客户端请求证书时,客户端无法发回某些内容并且连接失败。

在.net 中,我使用 sslStream 建立连接,在 Java 上,我使用标准 SSLSocket。下面是一些代码片段,但这是我到目前为止所拥有的:

在服务器端 (Windows),我在 MMC 下的个人/证书文件夹中有一个私有证书。我在受信任的人/证书中拥有来自客户的公共证书。两个证书均由同一 CA 颁发。两个证书的证书链都有多个级别,但两者是相同的。链中的根级证书也安装在受信任的证书颁发机构/证书文件夹中。

在客户端 (Linux),我有一个密钥库,其中包含与服务器上安装的公共证书相匹配的私有证书。我有一个信任存储区,其中包含来自服务器的公共证书,与服务器的私有证书相匹配。

在服务器端(.net),我使用一个 Socket 进行异步读取,然后将其包装到 SSLStream 中,代码片段如下:

NetworkStream ns = new NetworkStream(socket, false);
SslStream ssl = new SslStream(ns, true);
ssl.AuthenticateAsServer(serverCertificate, true, SslProtocols.Default, true);
Run Code Online (Sandbox Code Playgroud)

客户端代码几乎是标准代码:

SSLSocketFactory factory = (SSLSocketFactory) SSLSocketFactory.getDefault();
InetAddress addr = InetAddress.getByName(servername);
SSLSocket socket = (SSLSocket) factory.createSocket(addr,port);
socket.setUseClientMode(true);
socket.setNeedClientAuth(true);
socket.setWantClientAuth(true);
socket.startHandshake();
os = new DataOutputStream(socket.getOutputStream());
is = new DataInputStream(socket.getInputStream());
byte[] outBuf …
Run Code Online (Sandbox Code Playgroud)

c# java sockets authentication ssl

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

Java keyTool-将主要/辅助中间证书追加到密钥存储区

我已经创建了一个导入了相关密钥对的密钥库(图像中的server.jks)。

keytool -importkeystore -srckeystore server.p12 -destkeystore server.jks -srcstoretype pkcs12
Run Code Online (Sandbox Code Playgroud)

我需要使用java keytool向其附加中间证书。

使用Windows上的KeyStore资源管理器工具,我可以在右键单击上下文菜单后附加证书,就像在所附的图像中一样。

在此处输入图片说明

在“附加证书”选项之后添加主要/中间证书之后,我可以像在树上一样在KeyStore资源管理器中看到它。

---primary intermediate certificate
     |---secondary intermediate certificate
           |---my server certificate  
Run Code Online (Sandbox Code Playgroud)

我非常想知道如何使用(LINUX)命令行上的“ Java KeyTool”来做到这一点。

先感谢您。

java ssl certificate append keytool

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

Java证书和密钥库之间的关系

我只是这样使用keytool:

keytool -genkey -keyalg RSA -alias selfsigned -keystore mykeys.jks -storepass password -validity 360 -keysize 2048
Run Code Online (Sandbox Code Playgroud)

......然后回答了它提示我的所有后续问题.这会mykeys.jks在我的本地目录中生成密钥库.

我的问题:这个JKS文件与其中包含的自签名证书的名称之间有什么关系?这意味着,我现在在这个密钥库中有一个名为"mykeys"的SSL证书吗?

额外问题:单个密钥库(JKS文件)内部可以有多个证书吗?如果是这样,我如何添加第二个SSL证书,例如,命名my2ndcert为同一个JKS文件?

java ssl keytool ssl-certificate

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

Java SSLSocket:如何发送完整的服务器证书链?

当我在 Java 7 中创建 SSLServerSocket 时,服务器正确使用我的服务器证书和密钥。该证书是由 ca 的子 ca 颁发的。因此,从根证书到服务器证书的完整链有四个证书。完整的链存在于密钥库/信任库中。

但是,当客户端连接时,服务器始终仅发送服务器证书本身。这也适用于基于 Java 的 Web 服务器,例如 Jetty。

因为大多数客户端只安装了根 ca 证书,而不安装两个子 ca 证书,这是一个大问题。

如何强制 Java 在 SSL/TLS 握手中发送完整的证书链?

java ssl certificate

2
推荐指数
1
解决办法
6561
查看次数

zuul 和微服务之间使用证书的 tls 相互认证

我有一个 zuul 代理作为边缘服务器,我的微服务是非 jvm 应用程序,我不使用功能区或尤里卡。这些微服务只能通过 https 访问,并且需要客户端证书才能与它们通信。zuul 是否支持与下游证书的相互身份验证?如果是这样,我如何在我的 zuul 服务器上设置它。

java ssl spring netflix-zuul

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

Keytool - 如何生成非自签名证书?

令人困惑的是,由 keytool 生成的密钥库包含使用以下命令的自签名证书:

keytool -genkey -keyalg RSA -keysize 1024 -keystore bob.keystore
Run Code Online (Sandbox Code Playgroud)

生成自签名证书没有意义,因为您需要受信任的 CA 来签署您的证书请求。如何生成非自签名密钥库?

java ssl keytool

0
推荐指数
1
解决办法
6116
查看次数