标签: openssl

如何将私钥转换为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万
查看次数

SSL:错误:0B080074:x509证书例程:X509_check_private_key:键值不匹配

我无法设置SSL.我用谷歌搜索了一些解决方案,但没有一个能为我工作.我需要一些帮助...

这是我尝试重新启动nginx时出现的错误:

root@s17925268:~# service nginx restart
Restarting nginx: nginx: [emerg] SSL_CTX_use_PrivateKey_file("/etc/nginx/conf.d/ssl/ssl.key") failed (SSL: error:0B080074:x509 certificate routines:X509_check_private_key:key values mismatch)
nginx: configuration file /etc/nginx/nginx.conf test failed
Run Code Online (Sandbox Code Playgroud)

我的证书来自StartSSL,有效期为1年.

这是我测试的内容:

  • 证书和私钥没有尾随空格.
  • 我没有使用默认的server.key文件.
  • 我检查了nginx.conf,指令指向正确的私钥和证书.

我还检查了模数,我得到了密钥和证书的不同模数.

谢谢您的帮助.:)

ssl openssl key certificate nginx

84
推荐指数
6
解决办法
10万
查看次数

如何在两种公钥格式之间进行转换,一种是"BEGIN RSA PUBLIC KEY",另一种是"BEGIN PUBLIC KEY"

如何在两种公钥格式之间进行转换,一种格式为:

-----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包含相同的公钥信息,但它们的格式不同,我想知道如何在两种格式之间进行转换?任何人都可以向我展示两种格式的简明介绍吗?

openssl ssh-keys x509 public-key pkcs#1

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

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万
查看次数

为域和子域创建自签名证书 - NET :: ERR_CERT_COMMON_NAME_INVALID

我按照教程在Windows上创建签名SSL证书用于开发目的,并且它适用于我的一个域(我使用hosts文件来模拟dns).然后我发现我有很多子域名,为每个子域名创建证书会很麻烦.所以我尝试使用wildcard in Commonfield 创建证书,如serverfault的一些答案所示.像这样:

Common Name: *.myserver.net/CN=myserver.net
Run Code Online (Sandbox Code Playgroud)

但是,在将此证书导入受信任的根证书颁发机构后,我NET::ERR_CERT_COMMON_NAME_INVALID在Chrome中遇到了主要域及其所有子域的错误,例如:https://sub1.myserver.nethttps://myserver.net.

这台服务器无法证明它是myserver.net; 其安全证书来自*.myserver.net/CN = myserver.net.

这可能是由于配置错误或攻击者拦截您的连接造成的.

Common Name字段中是否有错误导致此错误?

dns ssl openssl windows-7-x64

77
推荐指数
6
解决办法
19万
查看次数

CMake无法找到OpenSSL库

我正在尝试安装一个软件,它使用cmake来安装自己,当我在commandlin cmake上给它时..
它在这个文件中给出了以下错误,CMakeLists.txt -------- line ---> find_package(需要OpenSSL): -

 cmake ..
-- Could NOT find Git (missing:  GIT_EXECUTABLE) 
ZLib include dirs: /usr/include
ZLib libraries: /usr/lib/arm-linux-gnueabihf/libz.so
Compiling with SSL support
CMake Error at /usr/local/share/cmake-2.8/Modules/FindPackageHandleStandardArgs.cmake:97 (message):
  Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the
  system variable OPENSSL_ROOT_DIR (missing: OPENSSL_LIBRARIES
  OPENSSL_INCLUDE_DIR)
Call Stack (most recent call first):
  /usr/local/share/cmake-2.8/Modules/FindPackageHandleStandardArgs.cmake:291 (_FPHSA_FAILURE_MESSAGE)
  /usr/local/share/cmake-2.8/Modules/FindOpenSSL.cmake:313 (find_package_handle_standard_args)
  CMakeLists.txt:436 (find_package)
Run Code Online (Sandbox Code Playgroud)

这是文件CMakeLists.txt的一部分,其中出现错误:------

#
# OpenSSL
#
if (WITH_SSL)
    message("Compiling with SSL support")

    if (USE_CYASSL)
        # …
Run Code Online (Sandbox Code Playgroud)

openssl cmake

76
推荐指数
15
解决办法
15万
查看次数

使用Homebrew在OS X上更新OpenSSL

我正在使用MacOS X 10.7.5,由于握手失败,我需要更新的OpenSSL版本.互联网上有几个教程,我尝试了以下内容:

brew install openssl
brew link openssl --force
Run Code Online (Sandbox Code Playgroud)

然而,它不起作用:

openssl version
OpenSSL 0.9.8r 8 Feb 2011

brew unlink openssl && brew link openssl --force
Unlinking /usr/local/Cellar/openssl/1.0.1e... 1139 links removed
Linking /usr/local/Cellar/openssl/1.0.1e... 1139 symlinks created
Run Code Online (Sandbox Code Playgroud)

SVN问题也未解决.有任何想法吗?我宁愿不尝试MacPorts方式,因为它可能会干扰Homebrew.

svn macos homebrew openssl

75
推荐指数
5
解决办法
14万
查看次数

生成加密安全令牌

为了生成32个字符的令牌以访问我们目前使用的API,我们目前使用:

$token = md5(uniqid(mt_rand(), true));
Run Code Online (Sandbox Code Playgroud)

我已经读过这种方法不是加密安全的,因为它基于系统时钟,这openssl_random_pseudo_bytes将是一个更好的解决方案,因为它更难预测.

如果是这种情况,等效代码会是什么样的?

我推测这样的事情,但我不知道这是不对的......

$token = md5(openssl_random_pseudo_bytes(32));
Run Code Online (Sandbox Code Playgroud)

我应该传递给函数的长度是多少?

php security openssl token

75
推荐指数
3
解决办法
7万
查看次数

如何在openssl中修复"无法写入'随机状态'"

使用此命令生成私钥时

genrsa -out my-prvkey.pem 1024
Run Code Online (Sandbox Code Playgroud)

它会抛出如下错误

Loadind'screen'进入随机状态-done生成RSA私钥,1024位长模数................................ ......... ++++++++++++++++++++++++++++++++++++++ ++无法写'随机状态'e为65537(0*10001)

这在创建公共证书时会出现任何问题.我在Windows中运行此命令.任何人都可以帮我修复吗?

windows openssl

72
推荐指数
4
解决办法
9万
查看次数