当开始jetty-distribution-9.3.0.v20150612有openjdk 1.8.0_51一个亚马逊EC2 Linux机器上运行,是所有配置的ECDHE套房不支持打印.
2015-08-12 16:51:20 main SslContextFactory [INFO] Cipher TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 not supported
2015-08-12 16:51:20 main SslContextFactory [INFO] Cipher TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256 not supported
2015-08-12 16:51:20 main SslContextFactory [INFO] Cipher TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 not supported
2015-08-12 16:51:20 main SslContextFactory [INFO] Cipher TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 not supported
2015-08-12 16:51:20 main SslContextFactory [INFO] Cipher TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 not supported
2015-08-12 16:51:20 main SslContextFactory [INFO] Cipher TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 not supported
2015-08-12 16:51:20 main SslContextFactory [INFO] Cipher TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384 not supported
2015-08-12 16:51:20 main SslContextFactory [INFO] Cipher TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 not supported
2015-08-12 …Run Code Online (Sandbox Code Playgroud) 我想尝试JDK 9,我需要修补JCE.我在哪里可以得到JCE zip file for JDK 9?或者我可以使用JDK 8吗?我为JDK 9搜索了JCE zip,但无法找到它.提前致谢.
我有私钥存储在PKCS8 DER格式的文件中,并受密码保护.最简单的阅读方式是什么?
这是我用来加载未加密的代码:
InputStream in = new FileInputStream(privateKeyFilename);
byte[] privateKeydata = new byte[in.available()];
in.read(privateKeydata);
in.close();
KeyFactory privateKeyFactory = KeyFactory.getInstance("RSA");
PKCS8EncodedKeySpec encodedKeySpec = new PKCS8EncodedKeySpec(privateKeydata);
PrivateKey privateKey = privateKeyFactory.generatePrivate(encodedKeySpec);
Run Code Online (Sandbox Code Playgroud)
它适用于具有相同规范的未加密密钥.顺便说一下,我正在使用BouncyCastle.
我可以使用以下openssl命令查看此私钥
openssl pkcs8 -in ./privatekey.key -inform DER -passin pass:thisismypass
Run Code Online (Sandbox Code Playgroud)
请帮忙!!!
我已经在我自己对这个主题的回答中发布了一些解决方案.但是如果没有额外的库,只有BouncyCastle,任何人都可以提供帮助,我仍然无法回答问题.
我读了一篇关于当服务器发出长度超过1024位的密钥时出现错误'无法生成DH密钥对'的帖子.下载JCE无限量罐子应该可以解决这个问题.在测试环境中,我遇到了以下内容,对于同一个Web服务器,如果我使用Java 6,在执行https查询时没有出现任何错误,但是如果我使用Java 7则会得到"无法生成DH密钥对".
我尝试更换JCE无效的jar文件,但仍然得到相同的错误.自2007年以来报告了该错误,但为什么它运行Java 6而不是Java 7?要下载的文件不是正确的吗?我从以前的帖子Java获得了链接:为什么SSL握手会给出"无法生成DH密钥对"的异常?.
此时我不知道该怎么办.如果我尝试加载BouncyCastle提供程序,我会得到一个ArrayOutOfIndex异常.我的服务器只允许DH算法,所以我不能使用上面帖子中建议的其他算法.
我试图通过几个步骤处理X509证书并遇到几个问题.我是JCE的新手,所以我还没有完全了解所有内容.
我们希望能够根据不同的编码(PEM,DER和PCKS7)解析几个不同的X509证书.我使用FireFox(证书包括链)以PEM和PCKS7格式从https://belgium.be导出相同的证书.我已经离开了一些问题所不需要的线路
public List<X509Certificate> parse(FileInputStream fis) {
/*
* Generate a X509 Certificate initialized with the data read from the inputstream.
* NOTE: Generation fails when using BufferedInputStream on PKCS7 certificates.
*/
List<X509Certificate> certificates = null;
log.debug("Parsing new certificate.");
certificates = (List<X509Certificate>) cf.generateCertificates(fis);
return certificates;
}
Run Code Online (Sandbox Code Playgroud)
只要我使用FileInputStream而不是PCKS7的BufferedInputStream,这段代码工作正常,我觉得这很奇怪?但我可以忍受它.
下一步是验证这些证书链.1)检查所有证书是否都有有效日期(简单)2)使用OCSP验证证书链(如果证书中未找到OCSP URL,则回退到CRL).这是我不完全确定如何处理这个问题的地方.
我正在使用Sun JCE,但似乎没有那么多文档可用(在示例中)?
我首先做了一个简单的实现,只检查链而不经过OCSP/CRL检查.
private Boolean validateChain(List<X509Certificate> certificates) {
PKIXParameters params;
CertPath certPath;
CertPathValidator certPathValidator;
Boolean valid = Boolean.FALSE;
params = new PKIXParameters(keyStore);
params.setRevocationEnabled(false);
certPath = cf.generateCertPath(certificates);
certPathValidator = CertPathValidator.getInstance("PKIX"); …Run Code Online (Sandbox Code Playgroud) 我在阅读证书信息时遇到问题.我想以编程方式在Android中使用带有bouncycastle库的java阅读完整信息.现在,我只是在控制台中使用keytool命令:
>keytool -list -keystore 1.p12 -storetype pkcs12 -v
Run Code Online (Sandbox Code Playgroud)
有什么建议?
Java中的SecretKeyvs SecretKeySpec类之间有什么区别?
文件SecretKeySpec说:
它可以用于从字节数组构造一个SecretKey
在这段代码中,如果我打印secretKey.getEncoded()或secret.getEncoded()以十六进制表示,则两者都给出相同的输出.那我们为什么需要SecretKeySpec呢?
final String password = "test";
int pswdIterations = 65536 ;
int keySize = 256;
byte[] ivBytes;
byte[] saltBytes = {0,1,2,3,4,5,6};
SecretKeyFactory factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1");
PBEKeySpec spec = new PBEKeySpec(
password.toCharArray(),
saltBytes,
pswdIterations,
keySize
);
SecretKey secretKey = factory.generateSecret(spec);
SecretKeySpec secret = new SecretKeySpec(secretKey.getEncoded(),"AES");
Run Code Online (Sandbox Code Playgroud)
以下是两次调用的输出getEncoded():
00367171843C185C043DDFB90AA97677F11D02B629DEAFC04F935419D832E697
我一直在尝试理解用于Java的BouncyCastle加密API.不幸的是,我发现Java加密通常被服务提供者接口和术语所掩盖,以至于我无法理解实际做的事情.我已经尝试过反复阅读必要的文档,但它只是难以理解,引入了许多远远超出我认为应该需要的概念.
我真正想要的是一个执行以下操作的类:
public class KeyPair {
public byte[] public;
public byte[] private;
}
public class RSACrypto {
public static KeyPair generateRSAKeyPair() { /*implementation*/}
public static byte[] encrypt(byte[] data, byte[] publicKey) { /*impl*/}
public static byte[] decrypt(byte[] encryptedData, byte[] privateKey) { /*impl*/ }
}
Run Code Online (Sandbox Code Playgroud)
如果这是一个非常复杂的问题,请问"我真正想要的一切".关于在Java加密和BouncyCastle上阅读的地方的任何指示都是非常受欢迎的.任何有关Java加密系统实际布局的概述都非常受欢迎.
我想使用HSM(硬件安全模块)来创建XML文件的签名.我做了一些研究,但现在有点困惑.
你能否澄清一下这些问题:
在java平台文档http://www.oracle.com/technetwork/java/javase/jrereadme-182762.html中.关于评论
/lib/security/local_policy.jar /lib/security/US_export_policy.jar
由于某些国家/地区的导入控制限制,Java SE Development Kit和Java SE Runtime Environment附带的Java Cryptography Extension(JCE)策略文件允许使用强大但有限的加密.
JDK网站上提供了这些文件的无限强度版本,表明对加密强度没有限制,适用于符合条件的国家/地区的用户.那些居住在符合条件的国家/地区的人可以下载无限强度版本,并使用无限强度文件替换强加密jar文件.问题
jce ×10
java ×9
bouncycastle ×3
cryptography ×2
java-8 ×2
java-9 ×1
jetty ×1
jetty-9 ×1
linux ×1
openjdk ×1
pkcs#11 ×1
pkcs#12 ×1
pkcs#8 ×1
pki ×1
private-key ×1
rsa ×1
secret-key ×1
ssl ×1
validation ×1