标签: ssl-certificate

如何将私钥转换为RSA私钥?

我先解释一下我的问题.我从CA购买了证书,并使用以下格式生成csr和私钥:

openssl req -new -newkey rsa:2048 -nodes -keyout server.key -out server.csr
Run Code Online (Sandbox Code Playgroud)

当我打开server.key文件时,我看到它以"----- BEGIN PRIVATE KEY -----"开头

我在我的服务器上使用SSL证书,一切看起来都很好.

现在我想将相同的证书上传到AWS IAM,以便我可以将它用于beanstalk负载均衡器.我使用此aws文档中的以下命令http://docs.aws.amazon.com/IAM/latest/UserGuide/InstallCert.html#SubmitCSRCertAuth

iam-servercertupload -b public_key_certificate_file  -k privatekey.pem -s certificate_object_name
Run Code Online (Sandbox Code Playgroud)

我根据需要更改了证书文件名,但不断收到此错误:"400 MalformedCertificate Invalid Private Key".

有趣的是,在aws doc页面上,他们显示的示例私钥以"-------开始RSA私钥--------"开头

有没有办法使用openssl将我的私钥转换为RSA私钥?

ssl openssl ssl-certificate amazon-iam

88
推荐指数
3
解决办法
12万
查看次数

使用Godaddy颁发的证书时,"公钥证书和私钥不匹配"

我正在尝试在我在Amazon AWS上设置的新负载均衡器上安装GoDaddy SSL证书.我最初在Godaddy使用keytool程序在Glassfish 3.1服务器(Amazon linux ami)上直接安装创建了证书.我没有问题直接在服务器上进行设置.我现在需要将证书从Web服务器移动到新的负载均衡器.亚马逊要求私钥和证书采用PEM格式,因此我使用GoDaddy的"重定密钥"工具来创建新的证书.当我在AWS Mgmt Console的负载均衡器设置屏幕中加载它们时,我收到错误消息:"公钥证书和私钥不匹配."

以下是我创建密钥的方法:

$ openssl genrsa -des3 -out private.key 2048
$ openssl req -new -key private.key -out apps.mydomain.com.csr
Run Code Online (Sandbox Code Playgroud)

然后我在"重定密钥"过程中将.csr文件提交给GoDaddy.重新生成密钥后,我下载了2个新创建的证书(apps.mydomain.com.crt和gd_bundle.crt).我下载它们选择(Apache)作为服务器的类型(我也试过"其他"和"Cpanel",但所有看起来都是一样的).

此时,我使用以下命令从private.key文件中删除加密:

$ openssl rsa -in private.key -out private.pem
Run Code Online (Sandbox Code Playgroud)

此时,我将返回AWS Mgmt控制台,创建负载均衡器,添加安全服务器重定向,并将以下文件的内容放在屏幕上的相应字段中,并要求设置ssl证书:

private.pem --> Private Key
apps.mydomain.com.crt --> Public Key Certificate
gd_bundle.crt --> Certificate Chain
Run Code Online (Sandbox Code Playgroud)

当我单击"继续按钮"时,出现错误"错误:公钥证书和私钥不匹配".

- 有没有办法我可以测试我从亚马逊收到有效的错误消息?当我非常密切地关注GoDaddy的指令时,我觉得钥匙不匹配似乎很奇怪.

我在创建.csr之前尝试创建没有RSA加密的private.key文件,这似乎没有任何区别.

我也假设我从GoDaddy下载的.crt文件是.PEM格式,但我不知道如何验证这一点.

有任何想法吗?

ssl openssl amazon-ec2 ssl-certificate

85
推荐指数
4
解决办法
7万
查看次数

使用Python验证SSL证书

我需要编写一个脚本,通过HTTPS连接到公司内部网上的一堆站点,并验证他们的SSL证书是否有效; 他们没有过期,他们是为正确的地址等发出的.我们为这些网站使用我们自己的内部公司证书颁发机构,因此我们有CA的公钥来验证证书.

默认情况下,Python在使用HTTPS时接受并使用SSL证书,因此即使证书无效,诸如urllib2和Twisted之类的Python库也会很乐意使用证书.

是否有一个好的库可以让我通过HTTPS连接到一个站点并以这种方式验证它的证书?

如何在Python中验证证书?

python verification https ssl-certificate

83
推荐指数
7
解决办法
14万
查看次数

X509Store Certificates.Find FindByThumbprint的问题

我使用这个方法时遇到了问题 X509Store.Certificates.Find

public static X509Certificate2 FromStore(StoreName storeName, 
          StoreLocation storeLocation, X509FindType findType, string findValue)
{
    X509Store store = new X509Store(storeName, storeLocation);
    store.Open(OpenFlags.ReadOnly);
    try
    {
        //findValue = "7a6fa503ab57b81d6318a51ca265e739a51ce660"
        var results = store.Certificates.Find(findType, findValue, true);

        return results[0];                
    }
    finally
    {
        store.Close();
    }
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,Find方法返回0 results(results.Count == 0),但如果我将findValue作为常量,则该方法会找到证书.

public static X509Certificate2 FromStore(StoreName storeName, 
           StoreLocation storeLocation, X509FindType findType, string findValue)
{
    X509Store store = new X509Store(storeName, storeLocation);
    store.Open(OpenFlags.ReadOnly);
    try
    {         
        //findValue= "7a6fa503ab57b81d6318a51ca265e739a51ce660"
        var results = store.Certificates.Find(findType, 
                              "7a6fa503ab57b81d6318a51ca265e739a51ce660", true);
        return results[0];
    }
    finally
    { …
Run Code Online (Sandbox Code Playgroud)

c# wcf certificate ssl-certificate x509certificate

81
推荐指数
6
解决办法
5万
查看次数

证书受PC信任,但不受Android信任

从今天早上起,我的证书在Android上不再受信任,然后我的应用程序再也无法连接:

 Catch exception while startHandshake: javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
 return an invalid session with invalid cipher suite of SSL_NULL_WITH_NULL_NULL
 javax.net.ssl.SSLPeerUnverifiedException: No peer certificate
    at org.apache.harmony.xnet.provider.jsse.SSLSessionImpl.getPeerCertificates(SSLSessionImpl.java:137)
    at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:93)
    at org.apache.http.conn.ssl.SSLSocketFactory.createSocket(SSLSocketFactory.java:381)
    at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:165)
    at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
    at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
    at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:591)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:807)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:781)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:770)
Run Code Online (Sandbox Code Playgroud)

如果我尝试在谷歌浏览器(在PC上)没有问题,证书是可信的,但如果我在Android上使用Chrome浏览器,它会告诉我证书不受信任.我能做什么?

android ssl-certificate

81
推荐指数
3
解决办法
11万
查看次数

在.NET的HttpWebRequest/Response中使用自签名证书

我正在尝试连接到使用自签名SSL证书的API.我这样做是使用.NET的HttpWebRequest和HttpWebResponse对象.我得到一个例外:

底层连接已关闭:无法为SSL/TLS安全通道建立信任关系.

我明白这意味着什么.我理解为什么 .NET认为它应该警告我并关闭连接.但在这种情况下,无论如何我都想连接到API,中间人攻击会被诅咒.

那么,我该如何为这个自签名证书添加例外呢?或者是告诉HttpWebRequest/Response不要验证证书的方法?我该怎么办?

c# ssl httpwebrequest ssl-certificate

78
推荐指数
5
解决办法
9万
查看次数

在Windows上创建OpenSSL证书

由于我对SSL证书很新,以及它们的创建和使用,我想也许StackOverflow成员可以帮助我.

我来自荷兰,在线支付的常见方式是实施iDEAL.主要银行支持的在线支付协议.我必须实施'专业'版本.这包括创建RSA私钥.基于该密钥,我必须创建一个证书并将其上传到网络服务器.

我在Windows机器上并且完全混淆了要做什么.我看了一下OpenSSL网站,因为手册将我转发到该网站以获取SSL工具包.

该手册提供了两个必须执行的命令,以便创建RSA密钥和证书.

命令是:

openssl genrsa -des3 –out priv.pem -passout pass:myPassword 1024

openssl req -x509 -new -key priv.pem -passin pass:myPassword -days 3650 -out cert.cer

有没有办法我可以通过Windows机器上的实用程序来做到这一点?我已经下载了PuTTy KeyGenerator.但我不知道该怎么做,我已经创建了一个密钥(SSH-2 RSA,无论是什么......)但是如何使用该密钥创建证书?

windows ssl certificate ssl-certificate

78
推荐指数
5
解决办法
19万
查看次数

引起:java.security.UnrecoverableKeyException:无法恢复密钥

我提供了一个名为ABCC_client.store的jks密钥库.当我将此密钥库导入cacerts并尝试连接时,说没有这样的算法错误.PFA堆栈跟踪

    Caused by: java.security.NoSuchAlgorithmException: Error constructing implementation (algorithm: Default, provider: SunJSSE, class:   com.sun.net.ssl.internal.ssl.DefaultSSLContextImpl)
    at java.security.Provider$Service.newInstance(Provider.java:1245)
    at sun.security.jca.GetInstance.getInstance(GetInstance.java:220)
    at sun.security.jca.GetInstance.getInstance(GetInstance.java:147)
    at javax.net.ssl.SSLContext.getInstance(SSLContext.java:125)
    at javax.net.ssl.SSLContext.getDefault(SSLContext.java:68)
    at javax.net.ssl.SSLSocketFactory.getDefault(SSLSocketFactory.java:102)
    at org.apache.axis.components.net.JSSESocketFactory.initFactory(JSSESocketFactory.java:61)
    at org.apache.axis.components.net.JSSESocketFactory.create(JSSESocketFactory.java:79)
    ... 32 more
Caused by: java.security.UnrecoverableKeyException: Cannot recover key
    at sun.security.provider.KeyProtector.recover(KeyProtector.java:311)
    at sun.security.provider.JavaKeyStore.engineGetKey(JavaKeyStore.java:121)
    at sun.security.provider.JavaKeyStore$JKS.engineGetKey(JavaKeyStore.java:38)
    at java.security.KeyStore.getKey(KeyStore.java:763)
    at com.sun.net.ssl.internal.ssl.SunX509KeyManagerImpl.<init>(SunX509KeyManagerImpl.java:113)
    at com.sun.net.ssl.internal.ssl.KeyManagerFactoryImpl$SunX509.engineInit(KeyManagerFactoryImpl.java:48)
    at javax.net.ssl.KeyManagerFactory.init(KeyManagerFactory.java:239)
    at com.sun.net.ssl.internal.ssl.DefaultSSLContextImpl.getDefaultKeyManager(DefaultSSLContextImpl.java:170)
    at com.sun.net.ssl.internal.ssl.DefaultSSLContextImpl.<init>(DefaultSSLContextImpl.java:40)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
    at java.lang.Class.newInstance0(Class.java:355)
    at java.lang.Class.newInstance(Class.java:308)
    at java.security.Provider$Service.newInstance(Provider.java:1221)
    ... 39 more
Run Code Online (Sandbox Code Playgroud)

但是,如果我独立使用这个密钥库,即不将它添加到cacerts,它就可以工作.

一些谷歌搜索引导我到http://joewlarson.com/blog/2009/03/25/java-ssl-use-the-same-password-for-keystore-and-key/这说明密码可能与我有所不同密钥和密钥库.

java ssl jks ssl-certificate

78
推荐指数
5
解决办法
16万
查看次数

SSL错误:无法获取本地颁发者证书

我在Debian 6.0 32位服务器上配置SSL时遇到问题.我对SSL比较新,所以请耐心等待.我尽可能多地提供信息.
注意:已更改真实域名以保护服务器的标识和完整性.

组态

服务器正在使用nginx运行.它配置如下:

ssl_certificate           /usr/local/nginx/priv/mysite.ca.chained.crt;
ssl_certificate_key       /usr/local/nginx/priv/mysite.ca.key;
ssl_protocols             SSLv3 TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers               HIGH:!aNULL:!MD5;
ssl_verify_depth          2;
Run Code Online (Sandbox Code Playgroud)

我使用此处描述的方法链接了我的证书

cat mysite.ca.crt bundle.crt > mysite.ca.chained.crt
Run Code Online (Sandbox Code Playgroud)

mysite.ca.crt签名机构给我的证书在哪里,我的签字机构bundle.crt也发给我的是CA证书.问题是我没有直接从GlobalSign购买SSL证书,而是通过我的托管服务提供商Singlehop购买.

测试

证书在Safari和Chrome上正确验证,但在Firefox上验证不正确.初步搜索显示它可能是CA的问题.

我探讨了类似问题的答案,但无法找到解决方案,因为我真的不明白每个证书的用途.

我使用openssl的s_client来测试连接,并收到输出,这似乎表明与类似问题相同的问题.错误如下:

depth=0 /OU=Domain Control Validated/CN=*.mysite.ca
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=0 /OU=Domain Control Validated/CN=*.mysite.ca
verify error:num=27:certificate not trusted
verify return:1
Run Code Online (Sandbox Code Playgroud)

可以在此处找到openssl响应的完整详细信息(证书和不必要的信息被截断).

我也看到了警告:

No client certificate CA names sent
Run Code Online (Sandbox Code Playgroud)

这可能是问题所在吗?如何确保nginx发送这些CA名称?

试图解决问题

我试图通过直接从GlobalSign下载根CA来解决问题,但收到了同样的错误.我使用update-ca-certificates命令在我的Debian服务器上更新了根CA ,但没有任何改变.这可能是因为从我的提供商发送的CA是正确的,因此它导致证书被链接两次,这没有帮助.

0 s:/OU=Domain …
Run Code Online (Sandbox Code Playgroud)

security ssl https openssl ssl-certificate

78
推荐指数
1
解决办法
27万
查看次数

Personal and Web Hosting证书商店有什么区别?

在此输入图像描述

在Internet信息服务管理器中,在创建或导入证书时,您可以在Personal和Web Hosting证书存储区之间进行选项.

有什么不同?

windows iis ssl-certificate certificate-store windows-server

78
推荐指数
3
解决办法
5万
查看次数