我试图安装 node.js 并发现在./configure.
我该如何解决?这是强制性步骤吗?该--without-ssl选项会解决问题吗?
# ./configure
Checking for gcc : ok
Checking for library dl : not found
Checking for openssl : not found
Checking for function SSL_library_init : not found
Checking for header openssl/crypto.h : not found
/home/ec2-user/node-v0.6.6/wscript:374: error: Could not autodetect OpenSSL
support.
Make sure OpenSSL development packages are installed. Use configure --without-ssl
to disable this message.
Run Code Online (Sandbox Code Playgroud) 我正在使用以下代码生成密钥:
apt-get -qq -y install openssl;
mkdir -p /etc/apache2/ssl;
openssl genrsa -des3 -out server.key 1024;
openssl req -new -key server.key -out server.csr;
cp server.key server.key.org;
openssl rsa -in server.key.org -out server.key;
openssl x509 -req -days 12000 -in server.csr -signkey server.key -out server.crt;
mv server.crt /etc/apache2/ssl/cert.pem;
mv server.key /etc/apache2/ssl/cert.key;
rm -f server.key.orig;
rm -f server.csr
Run Code Online (Sandbox Code Playgroud)
我有两个问题:
如何跳过密码提示?我这样做是否相当安全?(因为它不应该是彻头彻尾的愚蠢,因为任何人都应该能够破解证书)
如何避免提示输入国家/地区名称、组织等。我希望我可以在命令提示符下提供它们(手册页仅显示 OpenSSL 的顶级选项)
因此,通过命令行参数传递密码并不是最安全的做法。也就是说,openssl 的文档让我对如何将密码参数传递给 openssl 命令感到困惑。
这就是我想要做的
openssl aes-256-cbc -in some_file.enc -out some_file.unenc -d
然后提示输入用于解密的密码。如果我只是想将密码提供给命令而不尝试将密码回显到文件,我搜索了 openssl 文档和互联网以尝试找到答案。我尝试添加-pass:somepassword和-pass somepassword带引号和不带引号都无济于事。
我终于找到了答案,并在其他一些论坛上看到人们提出了类似的问题,所以我想我会在这里为社区发布我的问题和答案。
注意:我使用的是 openssl 版本 0.9.8y
所以,场景是:鉴于我是鲍勃,我想为爱丽丝加密一些消息。我唯一的公钥是她的ssh-rsaid_rsa.pub 像这样:
SSH-RSA AAAAB3NzaC1yc2EAAAABIwAAAQEAyb + qaZLwgC7KAQJzYikf3XtOWuhlMXVv2mbTKa5dp0sHPRd2RaYnH8ZRkt7V8bjqct1IHGCuxI8xyoEp4at3FHe6j9RfWiarc1ldLUCmTtryI0GGpRs6Zpvqdtpcq / 1NCIYtUQAvsImyEFCtqmB2suDo1ZSllZQ0x9TCKHdCANYIOeaniuFzR57POgE3vxk / r6PO24oy8BIWqxvi29r0n1LUigVBJ7CmMHuzb4 / + i1v6PxV1Lqnj6osPP9GpXpsh8kLUCby / KcmcryWNdSP0esyCdDxkA5hlIuk8qL1vzsyPluUQuc0BEHu6nuw8WQlCF1mFFxcpJL + MhWEr01WIIw == sikachu@Sikachus-Notebook.local
那么,有没有办法使用这个公钥加密一个字符串,这样她就可以使用她的私钥id_rsa(从 生成ssh-keygen)来解密消息?
(我知道如果您正在使用.pem密钥对文件,则可以立即使用。如果您能告诉我如何将其转换为openssl支持的格式,那也很棒!)
谢谢!
我收到以下错误openssl req:
unable to find 'distinguished_name' in config
problems making Certificate Request
41035:error:0E06D06C:configuration file routines:NCONF_get_string:no value:/SourceCache/OpenSSL098/OpenSSL098-52.30.1/src/crypto/conf/conf_lib.c:329:group=req name=distinguished_name
Run Code Online (Sandbox Code Playgroud)
我的理解是,这是它找不到的“主题”……但是,我要说明的是:
openssl req -new \
-key "$PRIVATE_KEY" \
-sha256 \
-config "$OPTIONS_FILE" \
-subj "/C=US/ST=California/L=San Francisco/O=ACME, Inc./CN=*.*.$DOMAIN/" \
-out "$CSR_FILENAME"
Run Code Online (Sandbox Code Playgroud)
手册的唯一建议是配置文件不存在;我可以cat "$OPTIONS_FILE",所以它肯定存在,并且该错误之前没有手册指出的错误,如果是这种情况,它将在此之前出现,所以我很确定会openssl看到配置文件。
我的配置文件包含以下内容:
[req]
req_extensions = v3_req
[ v3_req ]
# Extensions to add to a certificate request
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = @alt_names
[alt_names]
DNS.1 = *.*.example.com
Run Code Online (Sandbox Code Playgroud)
...这几乎就是文档中的示例 …
最近的 Heartbleed 错误是否会影响我生成的 ssh 密钥并用于通过 Github、Heroku 和其他类似站点推送/拉取代码?
我需要更换我一直在使用的钥匙吗?
我试图为创建一个自签名证书localhost包含subjectAltName到满足的Chrome 58+:
createcertificate.sh:
#!/usr/bin/env bash
filename="$1server"
openssl req -new -sha256 -nodes -out ./../nginx/ssl/${filename}.csr -newkey rsa:2048 -keyout ./../nginx/ssl/${filename}.key -config <( cat ${filename}_csr.txt )
openssl x509 -req -in ./../nginx/ssl/${filename}.csr -CA ~/ssl/rootCA.pem -CAkey ~/ssl/rootCA.key -CAcreateserial -out ./../nginx/ssl/${filename}.crt -days 500 -sha256
Run Code Online (Sandbox Code Playgroud)
server_csr.txt:
[req]
default_bits = 2048
prompt = no
default_md = sha256
req_extensions = req_ext
distinguished_name = dn
[ dn ]
C=US
ST=New York
L=Rochester
O=End Point
OU=Testing Domain
emailAddress=your-administrative-address@your-awesome-existing-domain.com
CN = localhost
[ req_ext ]
subjectAltName = …Run Code Online (Sandbox Code Playgroud) 我创建了几个自签名 S/MIME 证书(使用 OSX Keychain & OpenSSL),然后将它们导出到 3 个文件中:
当尝试将这些导入回另一台 Mac 时,证书和私钥导入没有任何问题。但是无法导入公钥。
相反,我收到以下错误消息:
发生了错误。无法导入项目。
本次内容无法检索

如何导入公钥?是否应该将其转换为另一种格式以进行导入?
我想建立一个证书链,在顶部有一个自签名的“根”CA,用于签署子 CA,然后可以签署客户端和服务器证书。设置时openssl.cnf,我注意到一个keyUsage参数,显然需要将其设置为应该使用的任何密钥。虽然记录了参数值,但我找不到有关在某些情况下使用哪些参数值的任何信息。
这些keyUsage值是什么意思,在以下情况下我应该使用什么?
此外,是否需要使用某些值指定其他扩展名,例如nsCertType?
我可以使用此命令创建自签名证书
openssl req -new -newkey rsa:2048 -days 365 -nodes -x509 -keyout server.key -out server.crt
Run Code Online (Sandbox Code Playgroud)
但是是否可以将“国家名称”、“州或省名称”等参数传递给 OpenSSL 以自动执行此过程?
openssl ×10
certificate ×3
linux ×2
ssl ×2
command-line ×1
encryption ×1
heartbleed ×1
keychain ×1
macos ×1
private-key ×1
prompt ×1
public-key ×1
ssh ×1
x509 ×1