可能重复:
如何从.key和.crt文件获取.pem文件?
如何将.crt转换为.pem?
我想从我的PKCS#12文件中提取公钥和私钥,以便以后在SSH-Public-Key-Authentication中使用.
现在,我通过ssh-keygen生成密钥,我将它放在.ssh/authorized_key中,分别位于客户端的某个地方.
将来,我想使用PKCS#12容器中的密钥,所以我首先从PKCS#12中提取公钥,然后将它们放入.ssh/authorized_keys文件中.有没有机会通过openssl实现这一点?PKCS#12中的密钥是否兼容ssh-public-key身份验证?
我有一些代码调用使用X.509认证保护的第三方Web服务.
如果我直接调用代码(使用单元测试),它可以正常工作.
部署后,将通过WCF服务调用此代码.我添加了第二个调用WCF服务的单元测试,但是当我在第三方Web服务上调用方法时,这个CryptographicException消息失败了"Keyset does not exist".
我认为这是因为我的WCF服务将尝试使用不同的用户自己调用第三方Web服务.
任何人都可以解决这个问题吗?
我正在尝试使用带有SubjectAltName的OpenSSL生成一个自签名证书.虽然我正在为证书生成csr,但我猜我必须使用OpenSSL x509的v3扩展.我在用 :
openssl req -new -x509 -v3 -key private.key -out certificate.pem -days 730
Run Code Online (Sandbox Code Playgroud)
有人可以用确切的语法帮助我吗?
如何在两种公钥格式之间进行转换,一种格式为:
-----BEGIN PUBLIC KEY-----
...
-----END PUBLIC KEY-----
Run Code Online (Sandbox Code Playgroud)
另一种格式是:
-----BEGIN RSA PUBLIC KEY-----
...
-----END RSA PUBLIC KEY-----
Run Code Online (Sandbox Code Playgroud)
例如,我使用ssh-keygen命令生成了id_rsa/id_rsa.pub对,我使用以下方法计算了id_rsa中的公钥:
openssl rsa -in id_rsa -pubout -out pub2
Run Code Online (Sandbox Code Playgroud)
然后我再次使用以下方法从id_rsa.pub计算公钥:
ssh-keygen -f id_rsa.pub -e -m pem > pub1
Run Code Online (Sandbox Code Playgroud)
pub1的内容是:
-----BEGIN RSA PUBLIC KEY-----
MIIBCgKCAQEA61BjmfXGEvWmegnBGSuS+rU9soUg2FnODva32D1AqhwdziwHINFa
D1MVlcrYG6XRKfkcxnaXGfFDWHLEvNBSEVCgJjtHAGZIm5GL/KA86KDp/CwDFMSw
luowcXwDwoyinmeOY9eKyh6aY72xJh7noLBBq1N0bWi1e2i+83txOCg4yV2oVXhB
o8pYEJ8LT3el6Smxol3C1oFMVdwPgc0vTl25XucMcG/ALE/KNY6pqC2AQ6R2ERlV
gPiUWOPatVkt7+Bs3h5Ramxh7XjBOXeulmCpGSynXNcpZ/06+vofGi/2MlpQZNhH
Ao8eayMp6FcvNucIpUndo1X8dKMv3Y26ZQIDAQAB
-----END RSA PUBLIC KEY-----
Run Code Online (Sandbox Code Playgroud)
而pub2的内容是:
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA61BjmfXGEvWmegnBGSuS
+rU9soUg2FnODva32D1AqhwdziwHINFaD1MVlcrYG6XRKfkcxnaXGfFDWHLEvNBS
EVCgJjtHAGZIm5GL/KA86KDp/CwDFMSwluowcXwDwoyinmeOY9eKyh6aY72xJh7n
oLBBq1N0bWi1e2i+83txOCg4yV2oVXhBo8pYEJ8LT3el6Smxol3C1oFMVdwPgc0v
Tl25XucMcG/ALE/KNY6pqC2AQ6R2ERlVgPiUWOPatVkt7+Bs3h5Ramxh7XjBOXeu
lmCpGSynXNcpZ/06+vofGi/2MlpQZNhHAo8eayMp6FcvNucIpUndo1X8dKMv3Y26
ZQIDAQAB
-----END PUBLIC KEY-----
Run Code Online (Sandbox Code Playgroud)
根据我的理解,pub1和pub2包含相同的公钥信息,但它们的格式不同,我想知道如何在两种格式之间进行转换?任何人都可以向我展示两种格式的简明介绍吗?
我正在使用SslServerSocket和客户端证书,并希望从客户端的SubjectDN中提取CN X509Certificate.
我打电话的那一刻,cert.getSubjectX500Principal().getName()但这当然给了我客户端的格式化DN.出于某种原因,我只对CN=theclientDN 的部分感兴趣.有没有办法提取DN的这一部分而不自己解析String?
我有一个C/C++应用程序,我需要创建一个包含公钥和私钥的X509 pem证书.证书可以是自签名的,也可以是未签名的,无关紧要.
我想在应用程序中执行此操作,而不是从命令行执行此操作.
什么OpenSSL功能会为我做这个?任何示例代码都是奖金!
我正在编写一小段代码,用于读取存储在.pem文件中的公钥和私钥.我使用以下命令来生成密钥.
下面的命令生成一对密钥.
$openssl genrsa -out mykey.pem 2048
Run Code Online (Sandbox Code Playgroud)
此命令用于生成私钥
$openssl pkcs8 -topk8 -inform PEM -outform PEM -in mykey.pem \
-out private_key.pem -nocrypt
Run Code Online (Sandbox Code Playgroud)
和此命令获取公钥.
$ openssl rsa -in mykey.pem -pubout -outform DER -out public_key.der
Run Code Online (Sandbox Code Playgroud)
我写了两个分别读取私钥和公钥的方法.
public PrivateKey getPemPrivateKey(String filename, String algorithm) throws Exception {
File f = new File(filename);
FileInputStream fis = new FileInputStream(f);
DataInputStream dis = new DataInputStream(fis);
byte[] keyBytes = new byte[(int) f.length()];
dis.readFully(keyBytes);
dis.close();
String temp = new String(keyBytes);
String privKeyPEM = temp.replace("-----BEGIN PRIVATE KEY-----\n", "");
privKeyPEM = privKeyPEM.replace("-----END …Run Code Online (Sandbox Code Playgroud) 根据X.509,证书具有属性主题.
C=US, ST=Maryland, L=Pasadena, O=Brent Baccala, OU=FreeSoft, CN=www.freesoft.org/emailAddress=baccala@freesoft.org
这是典型的主题价值.问题是这些属性(C,ST,L,O,OU,CN)的类型(或标签)是什么,它们的格式是什么?
我正在尝试向现有的Web服务发送请求.此网络服务不受我的约束.此Web服务的安全策略要求我在SOAP请求中发送完整的证书链.我的证书链包含3个证书.证书链的设置没有问题,因为我能够测试它的有效性(并且已经这样做了).
此设置的安全配置(=在请求中发送完整的证书链)是:
<xwss:Sign id="signature">
<xwss:X509Token
certificateAlias="alias"
keyReferenceType="Direct"
valueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509PKIPathv1" />
</xwss:Sign>
Run Code Online (Sandbox Code Playgroud)
我试图通过Spring-WS实现这一目标.Spring-WS使用spring-ws-security来保证安全性.Spring-ws-security代表xws-security.
<dependency>
<groupId>org.springframework.ws</groupId>
<artifactId>spring-ws-security</artifactId>
<version>2.1.0.RELEASE</version>
<exclusions>
<exclusion>
<groupId>org.apache.ws.security</groupId>
<artifactId>wss4j</artifactId>
</exclusion>
<exclusion>
<groupId>com.sun.xml.wsit</groupId>
<artifactId>xws-security</artifactId>
</exclusion>
</exclusions>
</dependency>
Run Code Online (Sandbox Code Playgroud)
Xws-security有两种版本:
<dependency>
<groupId>com.sun.xml.wsit</groupId>
<artifactId>xws-security</artifactId>
<version>1.3.1</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
和
<dependency>
<groupId>com.sun.xml.wss</groupId>
<artifactId>xws-security</artifactId>
<version>3.0</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
第一个由Spring WS Security使用.第二个是遗产.
在xws-security中应用我的XWSS配置是在名为BinarySecurityToken的类中完成的.BinarySecurityToken有一个名为的字段
valueType
Run Code Online (Sandbox Code Playgroud)
valueType的JavaDoc表示它支持X509PKIPathv1(以及其他).但是,正如这个二传手所说:
protected void setValueType(String valueType) {
if (!(MessageConstants.X509v3_NS.equals(valueType)||MessageConstants.X509v1_NS.equals(valueType))) {
log.log(Level.SEVERE,"WSS0342.valtype.invalid");
throw new RuntimeException("Unsupported value type: " + valueType);
}
this.valueType = valueType;
}
Run Code Online (Sandbox Code Playgroud)
MessageConstants类(甚至)没有X509PKIPathv1的静态.当我运行我的代码时,我得到了预期的结果:
Unsupported value type: http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509PKIPathv1
Run Code Online (Sandbox Code Playgroud)
我能够查看遗产的源代码com.sun.xml.wss.xws-security:3.0.尽管我付出了努力,但我还没有找到它的源代码com.sun.xml.wsit.xws-security-1.3.1.不过我相信代码是一样的.我尝试了两个库,两者都给了我相同的例外.我尝试了它,使用默认的spring-ws-security并对两个库使用显式依赖声明(一次一个).
我的问题: