小编And*_*ndy的帖子

JCA/JCE和PKCS#11如何协同工作?

我想使用HSM(硬件安全模块)来创建XML文件的签名.我做了一些研究,但现在有点困惑.

你能否澄清一下这些问题:

  1. JCE中的键柄是什么意思?我已经读过它,它只是一个句柄而且密钥存储在其他地方.怎么可能?根据我的理解,我要么将密钥加载到内存中并使用它,要么签名完全由HSM完成,我只得到结果,对吧?
  2. PKCS#11标准是否定义了一种方式,以便在HSM中生成签名?我读过关于令牌的内容,但我不确定签名.
  3. 我的HSM的功能列表分别表示JCE和PKCS#11.那是什么意思?
  4. 我认为PKCS#11是一个标准,JCE定义了使用该标准的类.JCE是否指定了自己的协议?

java jce pkcs#11

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

如何使用apache.commons.net.ftps配置客户端身份验证?

我使用apache.commons.net -framework 在java中实现了FTPS客户端(FTP over SSL/TLS).它被配置为在默认端口21上执行显式安全性.

ftpsClient = new FTPSClient(false);
ftpsClient.setTrustManager(getConfiguration().getCertificatesManager());
ftpsClient.connect(getConfiguration().getHostName(), getConfiguration().getPort());
Run Code Online (Sandbox Code Playgroud)

只要我不在服务器上强制执行客户端身份验证,一切正常.但我需要启用客户端身份验证,因此我在服务器上强制执行它并配置客户端系统属性:

-Djavax.net.ssl.keyStore="D:/.../ftps-client-auth.keystore"
-Djavax.net.ssl.keyStorePassword="*****"
-Djavax.net.ssl.keyStoreType=JKS
Run Code Online (Sandbox Code Playgroud)

我得到的就像我没有设置系统属性一样:

javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
    at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.java:174)
    at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.java:136)
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.recvAlert(SSLSocketImpl.java:1806)
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:986)
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1170)
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1197)
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1181)
    at org.apache.commons.net.ftp.FTPSClient.sslNegotiation(FTPSClient.java:265)
    at org.apache.commons.net.ftp.FTPSClient._connectAction_(FTPSClient.java:207)
    at org.apache.commons.net.SocketClient.connect(SocketClient.java:172)
    at org.apache.commons.net.SocketClient.connect(SocketClient.java:192)
Run Code Online (Sandbox Code Playgroud)

服务器日志说:

DEBUG: Client "<my ip address>", "SSL_accept failed: error:140890C7:SSL routines:SSL3_GET_CLIENT_CERTIFICATE:peer did not return a certificate"
Run Code Online (Sandbox Code Playgroud)

似乎没错 - 我启用了-Djavax.net.debug = all,这表明服务器发送了它接受的CN列表,但是客户端发送了一个空的证书链.

  • 我做错了什么?
  • 我是否需要以编程方式进行一些配置?
  • 证书或私钥是否需要支持SSL/TLS的特殊功能?

java authentication ssl ftps apache-commons-net

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

我可以使用PKCS#11在HSM中创建签名吗?

我可以配置XAdES4J来委派签名创建使用PKCS#11基础架构给硬件安全模块(HSM)?如果是 - 如何?

这些网站上的信息让我假设,只有使用PKCS#11的密钥转移是可能的:

java pkcs#11 xades4j

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

Vaadin中的中央错误处理

我希望框架能够捕获每个未捕获的异常并显示适当的通知消息.

因此,我ErrorHandler在我的UI中设置了一个自定义(受到"Vaadin之书"的启发:https://vaadin.com/book/-/page/application.errors.html ):

public abstract class MyUI extends UI {

    @Override
    protected void init(final VaadinRequest request) {
        setErrorHandler(new DefaultErrorHandler() {
            @Override
            public void error(final com.vaadin.server.ErrorEvent event) {
                Throwable error = event.getThrowable();
                Notification.show(error.getLocalizedMessage(), Notification.Type.ERROR_MESSAGE);
            }
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

但是当我从后端加载错误时它没有被执行.相反,表单显示不完整,当我重新加载页面(F5)时,我得到一个异常视图,就像我从Tomcat的常规异常处理程序中知道的那样.

我设置它是不对的ErrorHandler?有没有更好的办法?

我正在使用Glassfish 4和Vaadin 7.

vaadin vaadin7

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