我使用keytool命令生成证书:
keytool -genkeypair -alias myRSAKey -keyalg RSA -keysize 1024 -keystore test.p12 -storepass test -storetype pkcs12
Run Code Online (Sandbox Code Playgroud)
然后,如果我尝试使用java安全API加载它,在将文件作为byte []获取后:
KeyStore ks = KeyStore.getInstance("PKCS12");
try{
ks.load(new ByteArrayInputStream(data), "test".toCharArray())
} catch (Exception e){
...
}
Run Code Online (Sandbox Code Playgroud)
我得到一个DerInputStream.getLength():lengthTag = 127,太大的异常.
怎么了?
我想用keytool程序将证书创建为PKCS12密钥库格式.
密钥库有扩展名.pfx.
我该如何实现这一目标?
我需要一些帮助将我的.P12证书文件转换为JKS密钥库.我使用Java的keytool实用程序遵循标准命令.但是,当我尝试使用生成的JKS文件通过SOAPUI访问WS端点时,我收到403.7错误 - 禁止访问:需要SSL证书.对同一端点使用带有SOAPUI的P12文件会产生成功的响应.以下是将P12密钥库导入JKS密钥库的标准命令 -
keytool -importkeystore -srckeystore src.p12 -srcstoretype PKCS12 -deststoretype JKS -destkeystore target.jks
Run Code Online (Sandbox Code Playgroud)
我也尝试用openssl转换P12 - > PEM - > DER - > JKS:
openssl pkcs12 -in src.p12 -out src.pem -clcerts
Run Code Online (Sandbox Code Playgroud)
(将src.pem编辑成两个名为src.key和src.cer的复合部分)
openssl pkcs8 -topk8 -nocrypt -in src.key -out key.der -inform PEM -outform DER
openssl x509 -in src.cer -inform PEM -out cert.der -outform DER
Run Code Online (Sandbox Code Playgroud)
(我运行了一个实用程序,将两个键组合成keystore.ImportKey)
keytool -importkeystore -srckeystore keystore.ImportKey -destkeystore target.JKS
Run Code Online (Sandbox Code Playgroud)
而且同样没有骰子.
有什么我想念的吗?
我有一个具有以下认证链的证书:Entrust->我的CA->我的发行CA->我的JBoss证书.现在,如果我在JBoss实例上安装我的证书,那么我在此实例上运行的任何页面都将显示为不可信,因为我的浏览器无法识别我的颁发CA. 我知道我的计算机拥有Entrust签名权限的公钥.如何安装我的证书,以便任何浏览器都可以看到整个证书链?
我制作了一个单独的.pem文件,其中包含所有可以使用的证书.它没.谁能解释我做错了什么,或者即使这是可能的?
我正在开发一款需要客户端证书身份验证(包含PKCS 12文件)的Android应用.随着所有这些的弃用apache.http.*,我们已经开始在我们的网络层上进行重构,我们决定使用OkHttp作为替代品,到目前为止我非常喜欢它.
但是,我没有找到任何其他方法来处理客户端证书auth而不使用SSLSocketFactoryOkHttp或其他任何事情.那么在这种特殊情况下,最好的做法是什么?OkHttp有另一种方法来处理这种身份验证吗?
我正在尝试在我的Qt应用程序中解压缩我的pkcs12文件 - 但没有运气.我正在构建一个Qt控制台应用程序(禁用GUI).
(我遵循了这个指南:https://github.com/trueos/sysadm-ui-qt/blob/master/src-qt5/gui_client/SSLNotes.txt)
Pkcs12创建命令:
"openssl req -newkey rsa:2048 -nodes -keyout test_key.pem"
"openssl req -key test_key -new -x509 -out test_crt.crt"
"openssl pkcs12 -inkey test_key.pem -in test_crt.crt -export -passout stdin -out new.pfx"
Run Code Online (Sandbox Code Playgroud)
Qt代码:
QString password="1234";
QFile pkcs("/Users/test/Desktop/certs/new.pfx");
pkcs.open(QFile::ReadOnly);
QSslKey key;
QSslCertificate cert;
QList<QSslCertificate> imported_certs;
static bool import=QSslCertificate::importPkcs12(&pkcs,&key,&cert,&imported_certs,QByteArray::fromStdString(password.toStdString()));
pkcs.close();
qDebug()<<import;
Run Code Online (Sandbox Code Playgroud)
手动提取密钥和文件已使用openssl命令.
错误信息:
"Unimplemented Code."
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
我得到.pem需要转换为.p12文件的外部文件- 我在这个过程中添加了用户名和密码.(我需要这样做才能使用第三方API.)
使用openssl,命令是......
openssl pkcs12 -export -in xxxx.pem -inkey xxxx.pem -out xxx.p12 -passout pas:newpassword -name "newname"
Run Code Online (Sandbox Code Playgroud)
我可以从终端会话运行它,它完美地工作.
但是,我需要经常这样做并编写一个Java类来处理这个和更多(我的应用程序主要是.jspTomcat和Apache).当我尝试从Java运行相同的命令时Runtime.exec,我得到了可怕的"无法写入'随机状态'"错误(使用OpenSSL"无法写入'随机状态'"是什么意思?).
我假设不同的是,当我从Java运行时,用户不是"root".
那么,有没有更好的方法使用Java库从pem转换为.p12而不是执行命令行程序(即openssl)?
否则,我想我需要在我的服务器上进行一些配置.我.md在服务器上的任何地方都找不到任何文件.唯一的openssl.cnf文件位于一个奇怪的目录(/etc/pki/tls)中.我是否需要在openssl.cnf其他地方创建新文件?
目前我有一个仅包含私钥的.PEM文件.我需要将此文件转换为.PKCS12文件.目前我正在尝试使用openssl来实现这一点,而且我遇到了一些问题.
我正在使用的.PEM文件格式如下:
-----BEGIN RSA PRIVATE KEY-----
Some key
-----END RSA PRIVATE KEY-----
Run Code Online (Sandbox Code Playgroud)
我使用以下Openssl命令尝试将此.PEM文件转换为.PKCS12:
openssl pkcs12 -export -inkey file.pem -out file.p12
Run Code Online (Sandbox Code Playgroud)
然后控制台挂起消息:
Loading 'screen' into random state -done
Run Code Online (Sandbox Code Playgroud)
我做错了什么?
任何帮助都会得到满足.
Google API设置提供了一种使用服务帐户创建项目的方法.
我下载私钥作为PKCS#12 p12文件.
我在哪里可以找到此文件的密码?
我尝试安装.p12证书到我的macos使用命令行.
我可以安装.cer
sudo certtool I Certificates.p12 d
Run Code Online (Sandbox Code Playgroud)
但它不适用于未生成此证书的计算机.我认为我应该使用.p12但是如何安装.p12?
我试过用
security add-certificates "/Users/$NAME/Library/Keychains/login.keychain" "$CERT_PATH"
Run Code Online (Sandbox Code Playgroud)
但结果与之前的命令相同.无法安装.p12
请帮忙.
谢谢,