OpenSSH不能直接使用PKCS#12文件。就像其他人建议的那样,您必须以PEM格式提取私钥,这会将您从OpenSSL领域带到OpenSSH。这里提到的其他解决方案对我不起作用。我将OS X 10.9 Mavericks(当前为10.9.3)与“预先打包的”实用程序(OpenSSL 0.9.8y,OpenSSH 6.2p2)一起使用。
首先,提取PEM格式的私钥,该私钥将由OpenSSH直接使用:
openssl pkcs12 -in filename.p12 -clcerts -nodes -nocerts | openssl rsa > ~/.ssh/id_rsa
我强烈建议使用密码对私钥进行加密:
openssl pkcs12 -in filename.p12 -clcerts -nodes -nocerts | openssl rsa -passout 'pass:Passw0rd!' > ~/.ssh/id_rsa
显然,在命令行上输入纯文本密码也不安全,因此您应该从历史记录中删除最后一个命令,或者只是确保它没有到达该位置。不同的外壳具有不同的方式。您可以在命令前面加上空格,以防止将其保存到Bash和许多其他Shell中的历史记录中。这也是从Bash的历史记录中删除命令的方法:
history -d $(history | tail -n 2 | awk 'NR == 1 { print $1 }')
另外,您可以使用其他方式将私钥密码传递给OpenSSL- 有关密码短语参数的信息,请参考OpenSSL文档。
然后,创建一个可以添加到authorized_keys文件中的OpenSSH公钥:
ssh-keygen -y -f ~/.ssh/id_rsa > ~/.ssh/id_rsa.pub
OpenSSH不能直接使用PKCS#12文件。就像其他人建议的那样,您必须以PEM格式提取私钥,这会将您从OpenSSL领域带到OpenSSH。这里提到的其他解决方案对我不起作用。我将OS X 10.9 Mavericks(当前为10.9.3)与“预先打包的”实用程序(OpenSSL 0.9.8y,OpenSSH 6.2p2)一起使用。首先,提取PEM格式的私钥,该私钥将由OpenSSH直接使用:...
PEM
_
PKCS
12 AnyAgent允许用户在Windows和Linux服务器上发现,清点和管理(添加和删除)基于
PEM
和
PKCS
12的证书存储。 编排器代理与被编排的服务器之间的通信
使用
SSH(对于Linux编排的服务器)和WinRM(对于Windows编排的服务器)进行处理。
PEM
_
PKCS
12 Windows AnyAgent实现以下功能:
创建-创建
PEM
或
PKCS
12证书存储。
发现-根据
文件
扩展名的可选列表和部分名称匹配,在一组路径
中
发现所有
PEM
或
PKCS
12证书存储。
库存-返回定义的证书存储区的所有证书。
管理(添加)-将证书添加到已定义的证书存储
中
。
管理(删除)-从定义的证书存储
中
删除证书。
PEM
_
PKCS
12 Windows AnyAgent支持以下类型的证书存储:
PEM
信任库(多个没有
私
钥
的
公
用(最有可能是CA)证书)。
PKCS
#12 是微软 PFX
文件
的替代者;然而,"
PKCS
#12
文件
" 和 "PFX
文件
" 这两个词有时被相互替代
使用
。
微软的 "PFX" 因作为最复杂的密码学协议之一而受到大量批评。
PfxCreator
PEM
证书+
私
钥
-> PFX
PfxCreator是一个简单的单exe工具,用于根据证书和
私
钥
的
PEM
表示创建
PKCS
#12
文件
(.pfx,.p12)。 无需安装或依赖
文件
。 PfxCreator的工作简单明了,在许多需要将证书导入Microsoft相关系统的情况下可能有用。 您不需要
使用
OpenSsl或任何命令行工具。 我已经创建了它作为将原始证书导入的助手。
创建pfx或p12
文件
支持RSA和ECDSA密
钥
输出已加密,密码可以为空
.Net Framework 4.7.2
( let [key ( generate-key )]
( write-private-key! key " pvt.
pem
" )
( write-public-key! key " pub.
pem
" )
( write-openssh-public-key! key " id_rsa.pub " )))
用于生成默认(2048位)长度的密
钥
,而:
( write-private-key! ( generate-key 2345 ) " pvt.
pem
" )
将发出一个自定义的长度密
钥
:
$ openssl rsa -noout -text -in pvt.
pem
| head -n
使用
2步将证书
导出
:
# 其
中
priv.p12是证书
文件
,证书密码是mypass1
# 第一步先
导出
为key
文件
举例输出key
文件
为priv.p12.3.key
$ openssl
pkcs
12 -in priv.p12 -nocerts -nodes -out priv.p12.3.key -password pass:mypass1
# 基于key
文件
导出
私
钥
$ openssl rsa
打开cmd
1、生成
私
有秘
钥
:
输入keytool -genkey -v -alias root -keyalg RSA -storetype
PKCS
12 -keystore d:/temp/store/test.jks
2、根据
私
有密
钥
生成
公
钥
输入keytool -export -alias root -keystore d:/temp/...
RSA的
私
钥
签名
公
钥
验签可以见http://blog.csdn.net/starfd/article/details/51917916,所以这里就没提
供
对应代码,具体代码如下: using Org.BouncyCastle.Asn1;
using Org.BouncyCastle.Asn1.
Pkcs
;
using Org.BouncyCastle.Asn1.X509;
请你写出配置 linux1 为 apache2 服务器,
使用
skills.com 或 any.skills.com(any 代表任意网址前缀,用 linux1.skills.com 和 web.skills.com 测试)访问时, 8 / 13 自动跳转到 www.skills.com 。 禁止
使用
ip 地 址 访 问 , 默 认 首 页 文 档 /var/www/html/index.html 的内容为"Apache"。 2.把/etc/ssl/skills.crt 证书
文件
和/etc/ssl/skills.key
私
钥
文件
转换 成含有证书和
私
钥
的/etc/ssl/skills.pfx
文件
;然后把/etc/ssl/skills.pfx 转换为含有证书和
私
钥
的/etc/ssl/skills.
pem
文件
,再从/etc/ssl/skills.
pem
文件
中
提取
证书和
私
钥
分别到/etc/ssl/apache.crt 和/etc/ssl/apache.key。 3.客户端访问 apache 服务时,必需有 SSL 证书的代码
1. 配置 linux1 为 apache2 服务器,
使用
skills.com 或 any.skills.com(any 代表任意网址前缀,用 linux1.skills.com 和 web.skills.com 测试)访问时, 8 / 13 自动跳转到 www.skills.com 。 禁止
使用
ip 地 址 访 问 , 默 认 首 页 文 档 /var/www/html/index.html 的内容为"Apache"。
在 linux1 上安装 apache2 服务器,编辑 /etc/apache2/sites-available/skills.conf
文件
,添加以下内容:
<VirtualHost *:80>
ServerName skills.com
ServerAlias any.skills.com
Redirect 301 / http://www.skills.com/
</VirtualHost>
禁止
使用
IP 地址访问可以在 /etc/apache2/apache2.conf
文件
中
添加以下内容:
<Directory /var/www/html>
Options -Indexes
AllowOverride None
Require all granted
<RequireAny>
Require not ip 127...1
Require not ip ::1
</RequireAny>
</Directory>
默认首页文档为 /var/www/html/index.html,可以在该
文件
中
添加 "Apache"。
2. 把/etc/ssl/skills.crt 证书
文件
和/etc/ssl/skills.key
私
钥
文件
转换成含有证书和
私
钥
的/etc/ssl/skills.pfx
文件
;然后把/etc/ssl/skills.pfx 转换为含有证书和
私
钥
的/etc/ssl/skills.
pem
文件
,再从/etc/ssl/skills.
pem
文件
中
提取
证书和
私
钥
分别到/etc/ssl/apache.crt 和/etc/ssl/apache.key。
使用
openssl 命令可以完成这些操作:
将证书和
私
钥
转换成 PFX 格式:
openssl
pkcs
12 -export -out /etc/ssl/skills.pfx -inkey /etc/ssl/skills.key -in /etc/ssl/skills.crt
将 PFX
文件
转换成
PEM
格式:
openssl
pkcs
12 -in /etc/ssl/skills.pfx -out /etc/ssl/skills.
pem
-nodes
从
PEM
文件
中
提取
证书和
私
钥
:
openssl x509 -in /etc/ssl/skills.
pem
-out /etc/ssl/apache.crt
openssl rsa -in /etc/ssl/skills.
pem
-out /etc/ssl/apache.key
3. 客户端访问 apache 服务时,必需有 SSL 证书的代码
在 /etc/apache2/sites-available/skills.conf
文件
中
添加以下内容:
<VirtualHost *:443>
ServerName www.skills.com
ServerAlias any.skills.com
DocumentRoot /var/www/html
SSLEngine on
SSLCertificateFile /etc/ssl/apache.crt
SSLCertificateKeyFile /etc/ssl/apache.key
</VirtualHost>
这样客户端访问 https://www.skills.com 或 https://any.skills.com 时就需要 SSL 证书了。