我第一次尝试创建 SSL 证书。我不知道这是如何工作的,只是按照提供给我的一些说明进行操作。
第一个命令工作正常:
openssl genrsa -des3 -out privkey.key 2048
Run Code Online (Sandbox Code Playgroud)
然后第二个命令给了我错误:
openssl req –new –nodes -key privkey.key –out server.csr
Run Code Online (Sandbox Code Playgroud)
它说“未知选项 -new”,然后列出所有选项,其中之一当然是“-new”
谷歌错误消息只给了我一个有用的论坛帖子,上面说我需要使用 -config 选项来指向我的 openssl.cnf 文件。所以我在我的 XAMPP 安装中搜索了 openssl.cnf 的唯一实例。
这给了我额外的“未知选项”错误,具体取决于我在命令中放置 -config 选项的位置。
openssl req -config /Applications/XAMPP/xamppfiles/share/openssl/openssl.cnf
-key privkey.key –out server.csr -new -nodes
Run Code Online (Sandbox Code Playgroud)
这给了我“未知选项-out”,这是荒谬的。
有人可以帮助我确定命令的顺序,或者让我知道 XAMPP openssl 命令是否存在已知错误?
我正在运行 OSX Lion 和 XAMPP 1.7.3
我只有mycert.jks文件。现在我需要提取并生成.key 和 .crt文件并在 apache httpd 服务器中使用它。
SSLCertificateFile /usr/local/apache2/conf/ssl.crt/server.crt
SSLCertificateKeyFile /usr/local/apache2/conf/ssl.key/server.key
Run Code Online (Sandbox Code Playgroud)
任何人都可以列出完成此操作的所有步骤。我搜索过但没有具体的例子来理解,混合和匹配的步骤。
请建议!
[编辑] 按照以下答案中的步骤操作后出现错误。
8/?21/?2015 9:07 PM] Sohan Bafna:
[Fri Aug 21 15:32:03.008511 2015] [ssl:emerg] [pid 14:tid 140151694997376] AH02562: Failed to configure certificate 0.0.0.0:4545:0 (with chain), check /home/certs/smp_c
ert_key_store.crt
[Fri Aug 21 15:32:03.008913 2015] [ssl:emerg] [pid 14:tid 140151694997376] SSL Library Error: error:0906D06C:PEM routines:PEM_read_bio:no start line (Expecting: TRUSTED
CERTIFICATE) -- Bad file contents or format - or even just a forgotten SSLCertificateKeyFile?
[Fri Aug 21 15:32:03.008959 2015] …Run Code Online (Sandbox Code Playgroud) 我正在为 nginx 的 SSL 配置中的ssl_dhparam指令生成 Diffie-Hellman 参数。
该文件dhparam.pem是使用命令创建的openssl dhparam 2048 -check -out dhparam.pem。
我应该为这个文件设置哪些权限?在 git 存储库中共享是否安全还是应该将其保密?
我正在测试 CMTS 设备的证书撤销功能。这需要我设置一个 OCSP 响应程序。由于它仅用于测试,我假设 OpenSSL 提供的最小实现就足够了。
我已经从电缆调制解调器中提取了证书,将其复制到我的 PC 并将其转换为 PEM 格式。现在我想在 OpenSSL OCSP 数据库中注册它并启动一个服务器。
我已经完成了所有这些步骤,但是当我执行客户端请求时,我的服务器总是以“未知”响应。它似乎完全不知道我的证书的存在。
如果有人愿意查看我的代码,我将不胜感激。为方便起见,我创建了一个脚本,其中包含所有使用命令的顺序列表,从设置 CA 到启动服务器:http : //code.google.com/p/stacked-crooked/source/browse/主干/杂项/OpenSSL/AllCommands.sh
您还可以找到我正在测试的自定义配置文件和证书:http : //code.google.com/p/stacked-crooked/source/browse/trunk/Misc/OpenSSL/
任何帮助将不胜感激。
有没有办法通过在初始命令上指定所有必需的参数来创建 SSL 证书请求?我正在编写一个基于 CLI 的 Web 服务器控制面板,如果可能的话,我想避免在执行时使用期望openssl。
这是创建证书请求的典型方法:
$ openssl req -new -newkey rsa:2048 -nodes -sha256 -keyout foobar.com.key -out foobar.com.csr
Generating a 2048 bit RSA private key
.................................................+++
........................................+++
writing new private key to 'foobar.com.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields …Run Code Online (Sandbox Code Playgroud) 运行以下命令时 openssl s_client -host example.xyz -port 9093
我收到以下错误:
139810559764296:error:14094412:SSL routines:SSL3_READ_BYTES:sslv3 alert bad certificate:s3_pkt.c:1259:SSL alert number 42
39810559764296:error:140790E5:SSL routines:SSL23_WRITE:ssl handshake failure:s23_lib.c:184:
Run Code Online (Sandbox Code Playgroud)
但最后我收到"Verify return code: 0 (ok)"消息。
我的问题是上述警报表示什么,以及 SSL 是否真的成功。
SSL handshake has read 6648 bytes and written 354 bytes
New, TLSv1/SSLv3, Cipher is AES128-SHA
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
SSL-Session:
Protocol : TLSv1.2
Cipher : AES128-SHA
Session-ID: xx
Session-ID-ctx:
Master-Key: xx
Key-Arg : None
Krb5 Principal: None
PSK identity: None …Run Code Online (Sandbox Code Playgroud) 我正在运行一个服务器“myserver.net”,它有子域“a.myserver.net”和“b.myserver.net”。
创建(自签名)SSL 证书时,我必须为每个包含 FQDN 的子域创建一个,即使这些子域只是虚拟主机。
OpenSSL 只允许一个“通用名称”,即所讨论的域。是否有可能创建对域的所有子域都有效的证书?
我正在尝试从启用 SSL 模块的源代码编译 nginx。当我运行此命令时:
./configure --with-http_ssl_module
Run Code Online (Sandbox Code Playgroud)
它会执行通常的检查以查看所有内容是否安装正确,然后会弹出:
检查 OpenSSL 库...未找到
./configure: 错误:SSL 模块需要 OpenSSL 库。您可以不启用这些模块,也可以将 OpenSSL 库安装到系统中,或者使用 --with-openssl= 选项使用 nginx 从源静态构建 OpenSSL 库。
我知道是安装OpenSSL的事实,因为当我做openssl version我得到OpenSSL 1.0.1 14 Mar 2012
所以我很难过。我想也许 OpenSSL 没有安装在它的默认位置,这就是 nginx 找不到它的原因,但我不知道它在哪里,因为它预装在服务器上。我怎样才能知道这是哪里?
服务器正在运行 Ubuntu 12.04 LTS。
谢谢。
我一直在想,为什么每次运行“echo 'helloworld' | openssl passwd -1 -stdin”都会产生不同的结果?如果我将任何哈希值放在 /etc/shadow 中,我可以将它们用作我的密码和登录到我的系统,它是如何工作的?
computer:/ user$ echo 'helloworld' | openssl passwd -1 -stdin
$1$xlm86SKN$vzF1zs3vfjC9zRVI15zFl1
computer:/ user$ echo 'helloworld' | openssl passwd -1 -stdin
$1$/0.20NIp$pd4X9xTZ6sF8ExEGqAXb9/
computer:/ user$ echo 'helloworld' | openssl passwd -1 -stdin
$1$sZ65uxPA$pENwlL.5a.RNVZITN/zNJ1
computer:/ user$ echo 'helloworld' | openssl passwd -1 -stdin
$1$zBFQ0d3Z$SibkYmuJvbmm8O8cNeGMx1
computer:/ user$ echo 'helloworld' | openssl passwd -1 -stdin
$1$PfDyDWER$tWaoTYym8zy38P2ElwoBe/
Run Code Online (Sandbox Code Playgroud)
我认为因为我使用这个哈希值向系统描述我的密码应该是什么,所以我每次都应该得到相同的结果。我为什么不呢?
我有一个脚本,它使用 openssl 的 s_client 命令为大量主机提取证书。由于防火墙,其中一些主机将不可避免地无法访问。是否可以将 s_client 超时设置为比默认值短得多的值?我在手册页/帮助文件中没有看到。
那个或某种包装器命令将在 X 秒后自动终止 openssl -s_client。
如果可能,我不想预先测试主机/端口的可用性。