<div class="blogpost-body" id="cnblogs_post_body">
<h2>目录</h2>
<ol><li><a href="https://blog.csdn.net/weixin_30847865/article/details/95023774#ssh-keygen">openSSH的ssh-keygen工具</a></li><li><a href="https://blog.csdn.net/weixin_30847865/article/details/95023774#openssl">openSSL</a></li><li><a href="https://blog.csdn.net/weixin_30847865/article/details/95023774#keytool">keytool</a></li><li><a href="https://blog.csdn.net/weixin_30847865/article/details/95023774#gpg">GPG</a></li><li><a href="https://blog.csdn.net/weixin_30847865/article/details/95023774#pgp">PGP</a></li><li><a href="https://blog.csdn.net/weixin_30847865/article/details/95023774#Putty">Putty</a></li><li><a href="https://blog.csdn.net/weixin_30847865/article/details/95023774#other">其他未整理内容</a></li></ol>
<p> </p>
<p> </p>
<h2><a name="ssh-keygen"></a>一、OpenSSH和ssh-keygen </h2>
<p>OpenSSH是SSH协议的开源版本(SSH:Secure SHell)。使用SSH透过计算机网络实现加密通讯,可以进行远程控制,在计算机之间传送文件等等。SSH传输的数据都进行了加密,比telnet,rcp,ftp,rlogin,rsh等以明文传输密码的工具更安全。</p>
<p>OpenSSH提供了实现SSH协议的很多工具。其中ssh-keygen用于生成,管理和转换用于认证的密钥和证书。</p>
<p> </p>
<p><strong>ssh-keygen</strong></p>
<ul><li><strong>-b <bits> </strong> 密钥长度,默认为2048</li><li><strong>-t <type> </strong> 密钥类型, rsa|des... (默认类型为rsa)
<ul><li>SSH1: RSA</li><li>SSH2: RSA, DSA, ECDSA</li></ul></li><li><strong>-N <password> </strong> 新密码</li><li><strong>-f <file> </strong> 指定密钥文件,创建时会同时生成一个.pub结尾的公钥文件。</li><li>-C <comment></li><li>-c 修改公钥或私钥文件中的注释</li><li>-p 修改私钥文件密码</li><li><strong>-P <password> 旧密码</strong></li><li>-e 导出为其它格式的密钥文件,可以转换密钥类型</li><li>-i 从其他格式的密钥文件导入,可以转换密钥类型</li><li>-m <PEM|PKCS8|RFC4716> 与-e,-i配合使用,指明导出或导入的密钥文件格式</li><li><strong>-y 读入密钥并显示公钥</strong></li></ul>
<p> </p>
<p> </p>
<p> </p>
<h2><a name="openssl"></a>二、OpenSSL</h2>
<p>OpenSSL 是一个强大的安全套接字层密码库,包括了加密算法,常用密钥和证书管理,SSL协议等功能。OpenSSL提供的命令非常多,这里只简单列出OpenSSL生成密钥和证书的一些操作(Window需要以管理员身份运行cmd)。</p>
<p>v1.0.1+密钥默认采用PKCS#8格式(之前版本为PEM)。</p>
<p> </p>
<p>查看openSSL版本</p>
<div class="cnblogs_code">
<pre class="blockcode"><span style="color:#000000;">openssl version
openssl version </span>-a</pre>
</div>
<p>enc 对称加密 </p>
<p> </p>
<p> </p>
<h3>1.密钥生成(genrsa,genpkey,req在证书请求时同时生成密钥, gendh, gendsa)</h3>
<p><span style="color:#0000ff;"><span style="color:#800000;"><strong>(1) openssl genrsa [options] [bits_num]</strong> </span> </span></p>
<ul><li><strong>-out <file></strong> 指定输出文件,不指定时在终端显示密钥内容</li><li><strong>-passout pass:<password></strong> 设置私钥文件密码</li><li>-f4 使用F4(0x10001)作为公钥的E参数(默认)</li><li>-3 使用3作为公钥的E参数</li><li>-des , -des3, -aes128, -aes192, -aes256 指定加密算法(默认不加密)</li></ul>
<p>默认生产的密钥格式为PEM。<strong>openssl默认只生成了私钥文件</strong>,当需要提取公钥时使用rsa命令。</p>
<p> </p>
<p>示例</p>
<div class="cnblogs_code">
<pre class="blockcode"><span style="color:#000000;">#生成RSA密钥对。位长度为2048,保持到rsakey0.pem文件中。
openssl genrsa </span>-out rsakey0.pem <span style="color:#800080;">2048</span><span style="color:#000000;"> <br>
#生成RSA密钥对。使用DES3加密,密钥使用密码保护,位长度为1024
openssl genrsa </span>-des3 -out rootca.key -passout pass:<span style="color:#800080;">123456</span> <span style="color:#800080;">1024</span></pre>
</div>
<p> </p>
<p><span style="color:#800000;"><strong>(2) openssl genpkey [options] </strong></span> v1.0.1+</p>
<p>示例</p>
<div class="cnblogs_code">
<pre class="blockcode">#生成RSA密钥,位长度为2048,格式为DER<br>openssl genpkey -algorithm RSA -out rsapriKey.pem -pkeyopt rsa_keygen_bits:<span style="color:#800080;">2048</span> -outform DER</pre>
</div>
<p> </p>
<p><span style="color:#888888;">(3) openssl req请求时生成新的密钥对</span></p>
<div class="cnblogs_code">
<pre class="blockcode"><span style="color:#888888;">openssl req -x509 -days 365 -newkey rsa:2048 -keyout private.pem -out public.pem -nodes</span></pre>
</div>
<p> </p>
<p> </p>
<h3> 2.密钥文件管理和转换(rsa, pkey)</h3>
<p><span style="color:#800000;"><strong>(1) openssl rsa [options] |
|