ssl协议,openssl,创建私有CA

SSL是Security Socket Layer;安全的套接字层

他介于HTTP和TCP协议层之间

SSL是Netscape公司开发的,属于个人

TLS是标准委员会制定的

OpenSSL是SSL的开源实现

CA:证书颁发机构:Certification Authority


两台主机要通信,他们需要先建立链接,建立链接的时候又需要保证这个链接是安全的,那么如何保证安全呢?

    这里就需要用到SSL来保证传输的安全性,SSL可以生成一对秘钥对,在建立安全链接的时候,客户端发出请求到服务器端,服务器端收到请求,把自己的公钥通过网络传给客户端,然后安全链接就建立了,之后发出的包都是通过这个安全链接来传送的,这个安全链接是虚拟的,只是每一个数据包的首部都增加了一个对应的SSL头部的字段,经过解密以后才能得到HTTP包的内容,客户端收到包后,需要使用服务端给发送过来的公钥来进行相应字段段的解密,解密成功以后,才可以得到对应的HTTP包。

一个服务商发布了一个软件,希望得到用户们的支持,但是用户担心下载到的软件不安全,这么如何保证这个软件的安全性?

    这里就需要用到CA来保证这个服务商发布的软件是安全的,CA会给这个服务商颁发一个数字证书,这个证书就可以证明这个软件是安全的,我们可以放心使用。那么,这个证书颁发机构肯定是权威的,不然出了问题找谁去呢,对吧。比如我们新建了一个网站,这个网站没有经过CA认证,没有给你颁发证书,那你的网站到底安全不安全呢,这时候如果有客户访问我们的网站,就会弹出来一个框告诉我们这个网站不一定安全,出了什么事你自己兜着。这时候胆子小点的,或者担心中招的朋友肯定就不会接着访问了,然后我们的网站慢慢就没人访问了,那这时候你就需要去权威机构买一个证书来证明你的网站是安全的。所以CA就担任了这个作用了,这里只说了道理,具体的可以上http://kb.cnblogs.com/page/194742/ 和 https://baike.baidu.com/item/ca%E8%AF%81%E4%B9%A6/10028741?fr=aladdin这看看。


接下来是具体的命令:

//自定义自己的CA来给自己颁发证书

openssl req -new -x509 -key server1024.key -out server.crt -days 365

//显示自定义的CA的具体信息

openssl x509 -text -in server.crt

//修改CA的配置文件(/etc/pki/tls/openssl.cnf)

把dir改为绝对路径

//到/etc/pki/CA/生成对应的私钥

(umask 077; openssl genrsa -out private/cakey.pem 2048)

//根据私钥生成对应的自签证书

openssl req -new -x509 -key private/cakey.pem -out cacert.pem

//在/etc/pki/CA/下生成对应的其他文件

mkdir certs newcerts private

touch index.txt

touch serial

echo 01 > serial



实验:给自己的httpd服务器签发证书(rhel系列)

1. 到/etc/httpd/目录下创建一个SSL目录

mkdir /etc/httpd/ssl

2. 为httpd服务器生成私钥

cd /etc/httpd/ssl

(umask 077; openssl genrsa -out httpd.key 1024)

3. 为httpd服务器生成申请

openssl req -new -key httpd.key -out httpd.csr 

之后填写申请表

4. 填完之后,就可以拿着申请去签名了,下面是签名命令

openssl ca -in httpd.csr -out httpd.crt -days 365

5. 截止此处证书签发完毕

6. 作为CA,怎么查看自己签发过的申请呢?

cd /etc/pki/CA

cat index.txt   //index.txt中存放的是签发过的CA证书信息

cat serial    //下个CA证书的序列号

7. 生成测试用的证书,仅在rhel系列

cd /etc/pki/tls/certs

make httpd.pem

此方法仅用在测试中,因为私钥也在证书中


起风了,努力生存
原文地址:https://www.cnblogs.com/StivenYang/p/8441300.html