SSL 证书颁发机构以格式向我发送了签名证书.pfx
,并且受密码保护;所以我需要将其转换为.crt
文件。
第一次尝试是openssl pkcs12 -in server.pfx -out server.crt -nokeys -clcerts
简单地在 Git-Bash Windows 中调用 ; 但它永远等待,没有任何输出或提示。最终,我切换到 Linux (RHEL7),同样的命令运行正常。事实证明,在Linux中命令提示符为“ Enter Import Password:
”;但是,在 Windows Git-Bash 中运行时,它缺少密码提示,并且将永远挂在那里。
我想知道是否有什么东西可以让它在 Windows Git-Bash 中工作,例如命令参数等,因为我的工作计算机仍在运行 Windows 操作系统。任何指示都将受到高度赞赏。
Linux 的截图:
[root@host]# openssl pkcs12 -in server.pfx -out server.crt -nokeys -clcerts
Enter Import Password:
MAC verified OK
[root@host]#
Run Code Online (Sandbox Code Playgroud) 我无法相信我是唯一一个遇到这个问题的人.我一直在谷歌搜索几个小时,没有运气.Java安全文档似乎没有彻底解决PKCS12证书.
我正在尝试为用户特定的PKCS12证书设置Java.除此之外,还将使用它,以便在Eclipse中,我可以访问通过证书进行身份验证的Trac服务器.我正在使用Trac Mylyn集成插件进行eclipse.
这是设置:
现在,我希望能够让每个用户只修改他们拥有的某个文件(例如〜/ .java.policy文件),并能够启动中央Eclipse应用程序并访问Trac存储库.看起来很简单.
现在,我可以得到这个工作的唯一方法是编辑$ ECLIPSE_HOME/eclipse.ini文件,并添加
-Djavax.net.ssl.keyStore="/home/user/user.p12"
-Djavax.net.ssl.keyStoreType="PKCS12"
-Djavax.net.ssl.keyStorePassword="pass1234"
-Djavax.net.ssl.trustStore="/central/ca.jks"
Run Code Online (Sandbox Code Playgroud)
好的,这有效,但有两个问题:
另外,我记得有一段时间你可以编辑$ JAVA_HOME/jre/lib/security/java.security文件并添加
keystore=/home/user/user.p12
keystore.type=PKCS12
keystore.password=pass1234
truststore=/central/ca.jks
Run Code Online (Sandbox Code Playgroud)
但Eclipse似乎没有选择它.可能是因为我的JAVA_HOME指向JDK,而不是JDK的嵌套JRE?
我见过引用以下属性的Java PKCS#11 Reference:keyStoreURL ="NONE"keyStoreType ="PKCS11"keyStorePasswordURL = some_pin_url
我看到另一个引用说你可以编辑〜/ .java.policy文件来包含:
keyStore "file:///home/user/user.p12", "PKCS12", "SunJSSE";
keyStorePasswordUrl "file:///home/user/password.txt";
Run Code Online (Sandbox Code Playgroud)
但这也没有被提升.也许它实际上是有效的,并且由于java.security文件不起作用的原因而没有被读取,或者它可能根本不起作用.
我见过的一些系统属性:
javax.net.ssl.keyStore="/home/user/user.p12"
javax.net.ssl.keyStoreType="PKCS12"
javax.net.ssl.keyStorePassword="password"
javax.net.ssl.keyStoreProvider="SunJSSE"
javax.net.ssl.trustStore="/home/user/ca.jks"
javax.net.ssl.trustStoreType="JKS"
javax.net.ssl.trustStorePassword=""
javax.net.ssl.trustStoreProvider="Sun" …
Run Code Online (Sandbox Code Playgroud) 任何人都可以解释如何使用存储在java'PKCS#12`密钥库中的证书来加密和解密文件?
在特定的p12文件上真的很奇怪.
如果我跑
keytool -list -storetype pkcs12 -keystore my_debug_keystore.p12 -storepass debug
keytool -v -list -storetype pkcs12 -keystore my_debug_keystore.p12 -storepass debug
Run Code Online (Sandbox Code Playgroud)
我明白了
Alias name: 1
Creation date: Aug 17, 2014
Entry type: PrivateKeyEntry
Certificate chain length: 1
Certificate[1]:
Owner: CN=sixminute, OU=, O=, C=IE
Issuer: CN=sixminute, OU=, O=, C=IE
Serial number: xxxxxxxxxxxxxxxxx
Valid from: Wed Nov 07 13:34:40 GMT 2012 until: Sun Nov 08 13:34:40 GMT 2037
Certificate fingerprints:
MD5: xxxxxxxxxxxxxxxxx
SHA1: xxxxxxxxxxxxxxxxx
Signature algorithm name: SHA1withRSA
Version: 3
Run Code Online (Sandbox Code Playgroud)
和
Your …
Run Code Online (Sandbox Code Playgroud) 是否可以从AP12的p12/pem文件获取应用程序的包ID?
我有一个系统,用户可以上传他的推送证书(p12或pem),很高兴向他展示有关捆绑ID的信息,以便用户可以检查他上传的内容
我无法使用keytool(java 8)更改PKCS密钥库密码.当我尝试更改密钥密码时:
keytool -keypasswd -keystore keystore.p12 -storetype PKCS12 -storepass oldpass -keypass oldpass -new newpass
keytool error: java.lang.UnsupportedOperationException: -keypasswd commands not supported if -storetype is PKCS12
Run Code Online (Sandbox Code Playgroud)
这意味着无法为PKCS12密钥库更改密钥密码.然后我尝试更改密钥库密码:
keytool -storepasswd -keystore keystore.p12 -storetype PKCS12 -storepass oldpass -new newpass
Warning: Different store and key passwords not supported for PKCS12 KeyStores. Ignoring user-specified -new value.
keytool error: java.io.FileNotFoundException: keystore.p12 (Access is denied)
Run Code Online (Sandbox Code Playgroud)
这意味着,我们必须一起更改密钥库密码和密钥密码.但是没有命令可以改变它们.我能做什么?
我需要使用格式为p12(PKCS12)的客户端证书文件与scrapy的网络服务器通信,有没有办法做到这一点?
新手Qt和开发跨平台应用程序,需要来自服务器和客户端的SSL身份验证基于.pem的加密适用于Linux,Android,Windows.但是Mac OSX存在问题.我们的代码如下所示:
QFile privateKeyFile(":/Certificate.pem"); // --> has certificate + key
privateKeyFile.open(QIODevice::ReadOnly | QIODevice::Text);
setLocalCertificateChain(QSslCertificate::fromPath(":/Certificate.pem", QSsl::Pem));
setPrivateKey(QSslKey(privateKeyFile.readAll(), QSsl::Rsa));
Run Code Online (Sandbox Code Playgroud)
在上面的代码privateKey().isNull()
返回true
Mac.当我们推荐这篇文章时,它说Mac不支持基于.pem的加密.
Secure Transport后端卷曲仅支持PKCS#12(P12)格式的客户端ID; 它不支持PEM格式的客户端ID,因为Apple不允许我们在不使用私有API的情况下以PEM格式从身份文件创建安全标识.我们无法使用私有API,因为Apple的任何应用商店都不允许使用私有API的应用.
由于理解有限,我解释说.pem对于与服务器进行SSL通信并不是一个好主意.如果这是错的,请阻止我!
因此,我们决定转移到所有平台的.pfx.我们已经有一个带密码的.pfx文件.我们将上面的代码转换为与.pfx兼容(即"Certificate.pfx",我们将此旧文件与"Certificate.pem"一起使用).而不是QSsl::Pem
,我们试过QSsl::Der
.但正如预期的那样,它没有用.但是,也没有加密错误,但我们确信我们做错了.:-)
我们引用了这篇文章并尝试从.pem重新生成.pfx,但这也没有帮助.
QSslCertificate :: importPkcs12无法解析PFX文件
在上述情况下,QSslCertificate::importPkcs12()
原始.pfx文件返回false.即使我们从命令行生成一个新的.pfx,对于上面的函数也是如此.
问题:有人可以帮助确切地与服务器执行.pfx加密吗?
.pem身份验证也没关系.
注意:
如何/如何使用 python 和加密模块生成 PKCS#12 文件?
使用上述模块为私钥生成 .pem 文件的内容非常简单:
keyPEMBytes = privateKey.private_bytes(
encoding=serialization.Encoding.PEM,
format=serialization.PrivateFormat.TraditionalOpenSSL,
encryption_algorithm=serialization.NoEncryption())
Run Code Online (Sandbox Code Playgroud)
也很容易为关联的证书生成 .cer/.pem 文件的内容:
certBytes = certificate.public_bytes(encoding=serialization.Encoding.PEM)
Run Code Online (Sandbox Code Playgroud)
但是我需要将它们(和它们的链)整合到一个 .p12(PKCS12 文件)中。所述模块记录了如何解析/使用 PKCS12 格式,但没有(我能找到的)关于如何生成它们的信息。
不过,我对 PKI 内容的理解是偶然的,所以也许我只是没有在文档中搜索正确的关键字?
我可以使用 Linux 在命令行中创建 .p12 文件
openssl pkcs12 -export -out myIdentity.p12 -inkey myPrivKey.pem -in myCert.crt -certfile myCertChain.crt
Run Code Online (Sandbox Code Playgroud)
所以我可以用 subprocess/cmd 来包装这样的调用,并用临时文件/管道来处理。不过,我希望将其全部保存在内存/python 中。
是否有我应该考虑的不同的 python TLS 库,可以做到这一点?
当尝试将 pkcs12 证书文件导入 android 以便与 openvpn connect 应用程序一起使用时,系统会提示我输入密码。这是与该 pkcs12 文件相关的密码。我继续输入正确的密码,但收到“密码错误”消息。
为了确认不是文件有问题,我尝试在 Windows 计算机上安装相同的证书,接受相同的密码并且安装证书没有问题。
这是在运行 Android 11 安全更新 2022-02-05 的两部不同智能手机上进行测试的。
以前有人见过这个问题吗?我只能在网上找到类似的问题,没有解决。