【问题标题】:Java and SSL - java.security.NoSuchAlgorithmExceptionJava 和 SSL - java.security.NoSuchAlgorithmException
【发布时间】:2011-09-15 22:49:34
【问题描述】:

我已经构建了一个 Java 程序作为服务器上数据库的前端,并且我正在尝试使用 SSL 来加密客户端和服务器之间的流量。这是我为创建服务器证书发出的命令:

keytool -genkey -alias localhost -keyalg RSA -keypass kpass123 -storepass kpass123 -keystore keystore.jks

以下是相关代码:

System.setProperty("javax.net.ssl.keyStore",
                   "G:/Data/Android_Project/keystore.jks");

System.setProperty("javax.net.ssl.keyPassword", "kpass123");

SSLServerSocketFactory factory = 
    (SSLServerSocketFactory)SSLServerSocketFactory.getDefault();

SSLServerSocket accessSocket = 
    (SSLServerSocket)factory.createServerSocket(DB_ACCESS_PORT);

当我尝试运行它时,我发现了这个:

java.security.NoSuchAlgorithmException:构造实现时出错(算法:默认,提供者:SunJSSE,类:com.sun.net.ssl.internal.ssl.DefaultSSLContextImpl)

我还发现“KeyPairGenerator”服务有可用的算法 DIFFIEHELLMAN、DSA、RSA,而“SSLContext”有算法 SSL、TLS、SSLV3、DEFAULT、TLSV1。

我是否需要想办法将 RSA 安装到 SSLContext 服务中?我什至在看正确的服务吗?我不应该使用 RSA 吗?

我对整个 SSL - 安全 - 证书这件事都是新手,这让我大吃一惊,当这些不同的服务应该访问相同的证书时,它们中的每一个都没有相同的算法。

【问题讨论】:

  • 看起来与this problem 非常相似。我首先怀疑有限的加密支持,但 1024 位强密钥对应该可以正常工作。 RSA 应该在不添加任何单独的提供程序的情况下可用。
  • 感谢您的链接!我看了那个问题,看来我做的一切都是正确的,但仍然出现异常。
  • NoSuchAlgorithmException 之前看到各种“由”异常也会很有趣:这通常是真正的原因所在。

标签: java security ssl


【解决方案1】:

尝试用javax.net.ssl.keyStorePassword 代替javax.net.ssl.keyPasswordJSSE ref guide 中没有提到后者。

您提到的算法应该默认使用默认安全提供程序。 NoSuchAlgorithmExceptions 通常是由其他底层异常(找不到文件、密码错误、密钥库类型错误……)引起的。查看完整的堆栈跟踪很有用。

如果堆栈跟踪中的信息不充分,您还可以使用-Djavax.net.debug=ssl 或至少使用-Djavax.net.debug=ssl,keymanager 来获取更多调试信息。

【讨论】:

  • @Bruno 是的,整个“密钥库通行证必须与密钥通行证”相同,而且我在“keyStorePassword”行中有旧密码,但您的回答提醒我再次检查。非常感谢!
  • 谢谢,这很有帮助。结果我需要在 systemd 启动文件 /etc/systemd/system/activemq.service 中为密钥库的两个 Java 系统属性加上单引号 - 否则由于空格,密码属性将被跳过:askubuntu.com/questions/614106/… - 例如Environment='ACTIVEMQ_SSL_OPTS=-Djavax.net.ssl.keyStore=/opt/activemq/conf/keystore.jks -Djavax.net.ssl.keyStorePassword=secret'
猜你喜欢
  • 2013-03-03
  • 2012-12-15
  • 1970-01-01
  • 2015-06-12
  • 1970-01-01
  • 2010-12-06
  • 2012-10-02
  • 2013-07-30
  • 1970-01-01
相关资源
最近更新 更多