求问linux中怎么创建私钥和证书请求?

图片说明
教程中这样写的,然而根本连ssh目录都没有啊,难道要自己创建这个目录和文件?那这两个文件分别是什么意思?里面内容是什么?

你首先要安装ssh,这是用来远程登陆的软件,打开命令行
首先执行sudo apt-get update 更新软件列表;
然后执行sudu apt-get install ssh 安装ssh

我也不懂,求解求解求解求解!

1、使用OpenSSL生成私钥
常用的生成算法有RSA及DSA,RSA生成的私钥可以用来加密以及签名,而DSA生成的私钥只可以用来签名
1.1)、RSA算法生成key的示例
openssl genrsa -des3 -out privkey.pem 2048

genrsa:指定了生成了算法使用RSA
-desc:表示生成的key是有密码保护的(注:如果是将生成的key与server的证书一起使用,最好不需要密码,就是不要这个参数,否则其它人就会在请求的时候每次都要求输入密码)
-out:后面的参数表示生成的key的输入文件
2048:表示的是生成key的大小,单为字节(bits)
1.2)、DSA算法生成key的示例
根据DSA算法生成Key需要两步:
1.2.1)、第一步是生成用于生成Key的参数:
openssl dsaparam -out dsaparam.pem 2048
1.2.2)、根据生成的参数生成Key:
openssl gendsa -des3 -out privkey.pem dsaparam.pem

详细参见:http://www.openssl.org/docs/HOWTO/keys.txt

2、使用OpenSSL创建证书申请及自签名证书
在第1步中,我们已经创建好了私钥,这个时候我们就可以使用创建好的private.pem来创建证书申请及自签名证书。

2.1) 创建证书申请
openssl req -new -key privkey.pem -out cert.csr
使用上面的命令就会创建一个证书申请,这里我们会要求输入国家、组织、姓名等信息,但是不会要求输入证书有效天数,因为证书有效天数是CA认证中心给我们的;然后我们会把这个生成好的cert.csr(Certificate Signing Request (CSR):证书签名申请)发给CA认证中心。
CA认证中心通过后,会反馈(通常是邮件)回来认证的信息,再导入即可。
关于导出CSR以及导入CA认证信息,可以参看文档:http://docs.oracle.com/javase/1.4.2/docs/tooldocs/windows/keytool.html

2.2) 创建自签名的证书
openssl req -new -x509 -key privkey.pem -out cacert.pem -days 1095
如果不需要第三方授权,或者是要创建一个用于测试的授权,我们就可以这样操作。后面的参数"-days 1095"表示授权天数为1095天。

详细参见:http://www.openssl.org/docs/HOWTO/certificates.txt

1、使用OpenSSL生成私钥
常用的生成算法有RSA及DSA,RSA生成的私钥可以用来加密以及签名,而DSA生成的私钥只可以用来签名
1.1)、RSA算法生成key的示例
openssl genrsa -des3 -out privkey.pem 2048

genrsa:指定了生成了算法使用RSA
-desc:表示生成的key是有密码保护的(注:如果是将生成的key与server的证书一起使用,最好不需要密码,就是不要这个参数,否则其它人就会在请求的时候每次都要求输入密码)
-out:后面的参数表示生成的key的输入文件
2048:表示的是生成key的大小,单为字节(bits)
1.2)、DSA算法生成key的示例
根据DSA算法生成Key需要两步:
1.2.1)、第一步是生成用于生成Key的参数:
openssl dsaparam -out dsaparam.pem 2048
1.2.2)、根据生成的参数生成Key:
openssl gendsa -des3 -out privkey.pem dsaparam.pem

详细参见:http://www.openssl.org/docs/HOWTO/keys.txt

2、使用OpenSSL创建证书申请及自签名证书
在第1步中,我们已经创建好了私钥,这个时候我们就可以使用创建好的private.pem来创建证书申请及自签名证书。

2.1) 创建证书申请
openssl req -new -key privkey.pem -out cert.csr
使用上面的命令就会创建一个证书申请,这里我们会要求输入国家、组织、姓名等信息,但是不会要求输入证书有效天数,因为证书有效天数是CA认证中心给我们的;然后我们会把这个生成好的cert.csr(Certificate Signing Request (CSR):证书签名申请)发给CA认证中心。
CA认证中心通过后,会反馈(通常是邮件)回来认证的信息,再导入即可。
关于导出CSR以及导入CA认证信息,可以参看文档:http://docs.oracle.com/javase/1.4.2/docs/tooldocs/windows/keytool.html

2.2) 创建自签名的证书
openssl req -new -x509 -key privkey.pem -out cacert.pem -days 1095
如果不需要第三方授权,或者是要创建一个用于测试的授权,我们就可以这样操作。后面的参数"-days 1095"表示授权天数为1095天。

使用openssl创建私钥CA
创建私有CA的步骤主要有2步:
1、生成一对密钥
创建私钥:
(umask 077;openssl genrsa -out /etc/pki/CA/private/cakey.pem NUMBITS)
使用(),该命令将会在子shell中执行,且执行完毕后退出子shell,由于密钥文件需要保
密,因此这里将创建的私钥文件的权限指定为600;
-out cakey.pem就是私钥的文件。这里的文件要与/etc/pki/tls/openssl.cnf中的私钥文件要相同
NUMBITS就是密钥的长度

            从私钥中提取公钥(公钥是从私钥提取出来的)
             openssl genrsa  -in /etc/pki/CA/private/cakey.pem  -pubout

    2、生成自签证书
            openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem   -out /etc/pki/CA/cacert.pem 

-days 365
使用openssl x509 -text -in /etc/pki/CA/cacert.crt 可以查看这个证书的内容

通过这两步就可以手动创建一个CA了。 不过这样创建的CA还不能颁发证书,要想给客户颁发证书还需要相应的文件,这些文件我们可以根据私有CA的配置文件/etc/pki/tls/openssl.conf来手动创建。
私有CA的配置文件/etc/pki/tls/openssl.conf,内容有:
这里之介绍我们需要的内容
[ CA_default ]
dir =/etc/pki/CA #定义默认CA目录
certs = $dir/certs #客户端证书路径
crl_dir = $dir/crl #证书吊销列表的路径
database = $dir/index.txt #保存已发出去的证书,由于检索

new_certs_dir = $dir/newcerts # 保存刚生成的证书

certificate = $dir/cacert.pem # CA自己的证书
serial = $dir/serial # 证书的序列号,默认是从01开始
crlnumber = $dir/crlnumber #证书吊销列表的工作号

crl = $dir/crl.pem # 证书吊销列表的文件
#证书吊销列表保存着曾经发出的证书,但是并未过期,而是由于某些原因不能使用了(安全机制)
private_key = $dir/private/cakey.pem # 私钥文件

因此我们需要在/etc/pki/CA/目录下创建私钥文件,CA证书、cert、crl、newcerts目录,创建serial和index.txt文件

为客户端颁发证书
首先客户端要为某个程序或者服务生成证书,最好在相应程序的目录下创建证书,例如以http为例,在/etc/httpd/ssl目录下创建如下文件即可:
1、需要在客户端本地创建私钥
openssl genrsa -out keyfile 1024
2、生成颁发证书请求文件并传给CA
openssl req -new -key keyfile -out KEYFILE.csr(请求文件后缀一定要是.csr)
3、CA签署请求文件
openssl ca -in KEYFILE.csr -out CERTIFICATE.crt -days 365(有效期限为3365天)
4、签署完成后就生产一个证书 ,并将证书传给客户端。
此时/etc/pki/CA/index.txt和/etc/pki/CA/serial文件同时发生改变。

说明:由于整个过程是在同一台电脑上完成的,因此客户端生成的颁发证书请求就不需要传给CA了,CA签署的证书也不用传给客户端了。因为CA和客户端使用同一台主机。

题主想问的是ssh还是ssl,这是两个不同的东西,都有公钥私钥,ssh可以看我的博客http://blog.csdn.net/lp18036194881/article/details/78712917,
ssl用于https的安全协议,相关命令不是很了解

http://blog.csdn.net/lp18036194881/article/details/78712917