安全认证https服务器的搭建

互联网中安全验证的重要性不言而喻,今天就讲下https服务器的搭建,最后会测试从浏览器到访问经过安全验证的服务器。废话少数,进入正题。

先普及下文件后缀的意义:

                *.key:密钥文件,一般是SSL中的私钥;

    *.csr:证书请求文件,里面包含公钥和其他信息,通过签名后就可以生成证书;

    *.crt, *.cert:证书文件,包含公钥,签名和其他需要认证的信息,比如主机名称(IP)等。

    *.pem:里面一般包含私钥和证书的信息。

再普及下ssl证书的意义:

1,CA证书,也叫根证书或者中间级证书。如果是单向https认证的话,该证书是可选的。不安装CA证书的话,浏览器默认是不安全的。
   2,服务器证书,必选项。通过key,证书请求文件csr,再通过CA证书签名,生成服务器证书。
   3,客户端证书,可选项。若有客户端证书则是双向https验证。

1.openssl的安装:

./config --prefix=/usr/local --openssldir=/usr/local/openssl
make
make install
安装过程中遇到了加载不到库的错误,解决方案如下:
sudo ln -s /usr/local/lib/libssl.so.1.1 /usr/lib/libssl.so.1.1; sudo ln -s /usr/local/lib/libcrypto.so.1.1 /usr/lib/libcrypto.so.1.1)

2.apache的安装:

./configure --prefix=/usr/local/apache --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-pcre=/usr/local/pcre 
make 
make install
开启服务:sudo /usr/local/apache/bin/apachectl start/stop/restart.
在/usr/local/apache/htdocs创建test.html文件
, 打开浏览器localhost/test.html可以测试下apache是否安装成功

3.生成根证书和秘钥:

mkdir /usr/local/apache/conf/ssl.crt
cp /usr/local/ssl/misc/CA.pl /usr/local/apache/conf/ssl.crt
cd /usr/local/apache/conf/ssl.crt
./CA.pl -newca
生成结果:demoCA/private/cakey.pem是CA证书的私钥文件,demoCA/cacert.pem是CA证书。

4.生成服务器证书:

a)生成服务器私钥:

openssl genrsa -des3 -out server.key 1024
输入加密密码,用 128 位 rsa 算法生成密钥,得到 server.key 文件。

b)生成服务器证书请求( CSR )

openssl req -new -key server.key -out server.csr
CSR( Certificate Signing Request)是一个证书签名请求,在申请证书之前,首先要在服务器上生成 CSR,并将其提交给 CA 认证中心,CA 才能签发 SSL 服务器证书。
也可以认为,CSR 就是一个在服务器上生成的证书。

c)生成服务器证书:

如果不使用 CA 证书签名的话,用如下方式生成:
openssl req -x509 -days 1024 -key server.key -in server.csr > server.crt
如果使用 CA 证书签名,用 openssl 提供的工具 CA.sh 生成服务器证书:
mv server.csr newreq.pem
./CA.pl -sign
mv newcert.pem server.crt

签名证书后,可通过如下命令可查看服务器证书的内容:
openssl x509 -noout -text -in server.crt
可通过如下命令验证服务器证书:
openssl verify -CAfile ca.crt server.crt

5.生成客户端证书:

a)生成客户端私钥:

openssl genrsa -des3 -out client.key 1024

b)生成客户端证书请求:

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

c)生成客户端证书(使用ca证书签名):

openssl ca -in client.csr -out client.crt

d)把证书格式转换成浏览器认识的pkcs12格式

openssl pkcs12 -export -clcerts -in client.crt -inkey client.key -out client.pfx

6.编辑配置文件/usr/local/apache/conf/httpd.conf

开启: LoadModule ssl_module modules/mod_ssl.so
去掉以下语句的注释, Include conf/extra/httpd-ssl.cfg
# Secure (SSL/TLS) connections
Include conf/extra/httpd-ssl.cfg
#

7.编辑/usr/local/apache/conf/extra/httpd-ssl.cfg

根据实际修改如下:
SSLCertificateFile "/usr/local/apache/conf/ssl.crt/server.crt"
SSLCertificateKeyFile "/usr/local/apache/conf/ssl.crt/server.key"
SSLCertificateChainFile "/usr/local/apache/conf/ssl.crt/ca.crt"
SSLCACertificatePath "/usr/local/apache/conf/ssl.crt"
SSLCACertificateFile "/usr/local/apache/conf/ssl.crt/cacert.pem"等

最后把client.pfx导入浏览器就OK了

测试结果如图:
安全认证https服务器的搭建_第1张图片

你可能感兴趣的:(web开发)