我想知道ECDHE-ECDSA-AES128-GCM-SHA256和ECDHE-ECDSA-AES128-GCM-SHA256是否有最低密钥生成要求?我正在尝试使用上述算法之一获取TLS客户端和服务器,以连接到彼此并不断接收“无共享密码错误”。我创建了一个CA用于签署客户机和服务器证书,并尝试使用openssl和Node.js进行连接。我正在localhost(127.0.0.1)上运行客户端和服务器,以消除任何其他可能的问题。
以下是我到目前为止所做的工作:
CA密钥对创建:
$ openssl genrsa -out ca-key.pem 4096
$ openssl req -new -x509 -days 365 -key ca-key.pem -out ca-cert.pem
服务器/客户端密钥对创建:
$ openssl genrsa -out server-key.pem 4096
$ openssl req -new -key server-key.pem -out server-csr.pem
$ openssl x509 -req -days 365 -in server-csr.pem -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -out server-cert.pem
$ openssl genrsa -out client-key.pem 4096
$ openssl req -new -key client-key.pem -out client-csr.pem
$ openssl x509 -req -days 365 -in client-csr.pem -CA ca-cert.pem -CAkey ca-key.pem -set_serial 02 -out client-cert.pem
我最初试图从命令行连接到node.js服务器(tls.createServer(),选项为:ciphers:'ecdhe-ecdsa-aes256-gcm-sha384:ecdhe-ecdsa-aes128-gcm-sha256'),但为了消除对节点的怀疑,我转而使用openssl创建客户端和服务器。
以下命令正确连接客户端和服务器,并说明它使用的密码为“new,TLSV1/SSLv3,cipher is ECDHE-RSA-AES256-GCM-SHA384”:
$ openssl s_server -accept 8888 -cert server-cert.pem -key server-key.pem -pass stdin -CAfile ca-cert.pem -state
<password entered here>
$ openssl s_client -connect 127.0.0.1:8888 -cert client-cert.pem -key client-key.pem -pass stdin -CAfile ca-cert.pem -state
<password entered here>
共享密码信息如下:
Shared ciphers:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-R
SA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES2
56-SHA:SRP-DSS-AES-256-CBC-SHA:SRP-RSA-AES-256-CBC-SHA:DHE-DSS-AES256-GCM-SHA384
:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA256:DHE-RSA-A
ES256-SHA:DHE-DSS-AES256-SHA:DHE-RSA-CAMELLIA256-SHA:DHE-DSS-CAMELLIA256-SHA:ECD
H-RSA-AES256-GCM-SHA384:ECDH-ECDSA-AES256-GCM-SHA384:ECDH-RSA-AES256-SHA384:ECDH
-ECDSA-AES256-SHA384:ECDH-RSA-AES256-SHA:ECDH-ECDSA-AES256-SHA:AES256-GCM-SHA384
:AES256-SHA256:AES256-SHA:CAMELLIA256-SHA:ECDHE-RSA-DES-CBC3-SHA:ECDHE-ECDSA-DES
-CBC3-SHA:SRP-DSS-3DES-EDE-CBC-SHA:SRP-RSA-3DES-EDE-CBC-SHA:EDH-RSA-DES-CBC3-SHA
:EDH-DSS-DES-CBC3-SHA:ECDH-RSA-DES-CBC3-SHA:ECDH-ECDSA-DES-CBC3-SHA:DES-CBC3-SHA
:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA2
56:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:SRP-DSS
-AES-128-CBC-SHA:SRP-RSA-AES-128-CBC-SHA:DHE-DSS-AES128-GCM-SHA256
当我在服务器或客户端和服务器上指定密码时,以下命令不起作用。注意,ECDHE-ECDSA-AES128-GCM-SHA256密码在上面的列表中被列为共享。
$ openssl s_server -accept 8888 -cert server-cert.pem -key server-key.pem -pass stdin -CAfile ca-cert.pem -cipher ECDHE-ECDSA-AES128-GCM-SHA256
<password entered here>
<< Server output after client connection attempt >>
Using default temp DH parameters
Using default temp ECDH parameters
ACCEPT
ERROR
2674688:error:1408A0C1:SSL routines:SSL3_GET_CLIENT_HELLO:no shared cipher:s3_srvr.c:1353:
shutting down SSL
CONNECTION CLOSED
ACCEPT
$ openssl s_client -connect 127.0.0.1:8888 -cert client-cert.pem -key client-key.pem -pass stdin -CAfile ca-cert.pem -cipher ECDHE-ECDSA-AES128-GCM-SHA256
<password entered here>
<<client output after connection attempt>>
CONNECTED(00000003)
2674688:error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure:s23_clnt.c:708:
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 7 bytes and written 166 bytes
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
---
有人有什么想法吗?提前道谢!
您用错误的键
openssl genrsa -out ca-key.pem 4096
您需要使用ecparam
openssl ecparam -name secp521r1 -out ca-key.pem -genkey
而且
openssl ecparam -name secp521r1 -out client-key.pem -genkey
genrsa
生成RSA密钥,当与ECDHE一起使用时,该密钥将验证椭圆曲线Diffie Hellman密钥交换(ECDHE)。
ECDHE-ECDSA-AES128-GCM-SHA256中的ECDSA意味着您需要椭圆曲线数字签名算法来验证该密钥。因为您没有这类键,所以命令失败。但是,ECDHE-RSA-AES256-GCM-SHA384之所以能工作,是因为它使用了您所拥有的RSA密钥。
您得到sha384是因为openssl选择了最强的密码套件,在所有条件相同的情况下,sha384比SHA256更好。您可以重写它,看起来就像是使用--cipher
进行的。
注意:您可能想使用不同的曲线。您可以使用
openssl ecparam -list_curves
出于好奇,为什么是那个特定的密码套件?ECDHE和ECDSA是最先进的,但sha256只是标准的,AES128当然也足够好,如果人们像ECDHE和ECDSA一样谨慎的话,就倾向于使用256。
问题内容: 我想知道ECDHE-ECDSA-AES128-GCM-SHA256和ECDHE-ECDSA-AES128-GCM- SHA256是否有最低密钥生成要求?我正在尝试使用上述算法之一来获取TLS客户端和服务器,以使其彼此连接并继续接收“无共享密码错误”。我创建了一个用于签署客户端和服务器证书的CA,并尝试仅与openssl以及在node.js中进行连接。我正在localhost(127.0
我正在尝试创建一个公钥以允许我推送到Git,但我的. ssh文件夹尚未创建。 以下是我运行的命令: $ssh-keygen-t rsa-Cemaill@me.com 生成公共/私有rsa密钥对 输入保存密钥的文件(/h/.ssh/id\u rsa): 这就是H:驱动器配置、数据、配置文件、配置文件中的全部内容。V2 我认为有一个问题,因为当我得到提示输入文件,其中保存密钥(/h//. ssh/id
我创建了一个ECDSA密钥对,并使用OpenSSL导出了公钥,但我无法从Java中读取公钥。 OpenSSL中的密钥生成: 从文件中读取密钥的 Clojure 代码,将 作为依赖项: 使用NIST P-256曲线生成密钥: 从磁盘加载: 公钥的内容:
我想获取一个SHA256散列,并使用Bouncy Castle(实际上是海绵城堡)生成一个密钥。在下面的代码摘录中,retval是SHA256Digest(字节数组)返回的值,finalKey应该是从SHA256哈希生成的键。 当我尝试运行代码时,我得到的消息是“Encoded key spec not recognized”,因此我认为retval应该采用某种特定的格式,并且我不能像现在这样直接
以下网站经常被引用,而且我认为是准确的: https://gobittest.appspot.com/Address 我试图在Golang中重现这些步骤,但第一步就失败了:-( 有人能给我提供一个Golang片段,给定ECDSA私钥,返回公钥吗?我想我可能具体指的是上述站点示例中的私钥指数和公钥指数。 i、 例如,给定随机生成的(十六进制编码的)私钥(指数?)<代码>E83385AF76B2B19
我是Openssl的新手,我已经生成了私钥myprivatekey。pem和公钥mypublickey。pem与: 和我的公钥: 接下来我想做的是用通行短语私钥加密我的ecdsa,并对我的公钥进行认证请求,感谢大家的帮助。