利用httpd+openssl来实现网站的https

简介:

利用httpd+openssl来实现网站的https

                                        CA验证中心(颁发/吊销证书)
                                        /                 \ \  
                               CA 证书    /             下发   \ \ 证书请求 
                                         /             证书   \ \ 
                                   client <--------数字证书------ WEB 

1。web服务器,生成非对称加密密钥对(web公钥,web私钥) 
2。web服务器使用 web身份信息+web公钥 生成 web服务器的证书请求 ,并将证书请求发给CA服务器 
3。CA服务器使用 CA的私钥 对 web 服务器的证书请求 进行数字签名得到 web服务器的数字证书,并将web服务器的数字证书颁发给web服务器。 
4。client访问web服务器,请求https连接,下载web数字证书 
5。client下载 CA数字证书(CA身份信息+CA公钥,由上一级CA颁发,也可自签名颁发),验证 web数字证书(CA数字证书中有CA公钥,web数字证书是使用CA私钥签名的) 
6。client与web协商对称加密算法,client生成对称加密密钥并使用web公钥加密,发送给web服务器,web服务器使用web私钥解密 
7。使用对称加密密钥传输数据,并校验数据的完整性 



利用httpd+openssl来实现网站的https

下面呢我们来讲一下具体步骤 
配置CA服务器
======================================================== 
1.配置CA 172.16.1.2 生成CA自己的公钥 私钥 CA对自己进行证书自签名 (用脚本生成) 
[root@CA ~]# vim /etc/pki/tls/openssl.cnf 
dir             = /etc/CA                  # Where everything is kept      第45行 
basicConstraints=CA:TRUE     # 自签署的证书可以使用  第178行

[root@CA ~]# vim /etc/pki/tls/misc/CA
CATOP=/etc/CA            #第42行

[root@CA ~]# /etc/pki/tls/misc/CA -newca 
CA certificate filename (or enter to create) 
Making CA certificate ... 
Generating a 1024 bit RSA private key 
......++++++ 
.......................++++++ 
writing new private key to '../../CA/private/./cakey.pem'     #私钥 
Enter PEM pass phrase:123456                         #保护CA私钥
Verifying - Enter PEM pass phrase:123456 
----- 
You are about to be asked to enter information that will be incorporated into your certificate request. 
What you are about to enter is what is called a Distinguished Name or a DN. 
There are quite a few fields but you can leave some blank 
For some fields there will be a default value, 
If you enter '.', the field will be left blank.
----- 
Country Name (2 letter code) [GB]:CN                     #身份信息 
State or Province Name (full name) [Berkshire]:BEIJING 
Locality Name (eg, city) [Newbury]:HD 
Organization Name (eg, company) [My Company Ltd]:UPLOOKING 
Organizational Unit Name (eg, section) []:IT
Common Name (eg, your name or your server's hostname) []:CA.uplooking.com 
Email Address []:CA@uplooking.com 

Please enter the following 'extra' attributes to be sent with your certificate request 
A challenge password []: 
An optional company name []: 
Using configuration from /etc/pki/tls/openssl.cnf 
Enter pass phrase for ../../CA/private/./cakey.pem:123456     #使用私钥自签名 
Check that the request matches the signature 
Signature ok 
Certificate Details: 
       Serial Number: 0 (0x0) 
       Validity 
           Not Before: Mar 5 01:40:50 2012 GMT 
           Not After : Mar 5 01:40:50 2015 GMT 
       Subject:
           countryName = CN
           stateOrProvinceName = BEIJING
           organizationName = UPLOOKING
           organizationalUnitName = IT
           commonName = CA.uplooking.com
           emailAddress = CA@uplooking.com 
       X509v3 extensions: 
               X509v3 Basic Constraints: 
                   CA:TRUE 
               Netscape Comment: 
                   OpenSSL Generated Certificate 
               X509v3 Subject Key Identifier: 
                   61:D5:3A:C7:5C:0F:66:FE:D5:EF:5D:A1:94:8F:FD:C2:E5:94:7D:D3 
               X509v3 Authority Key Identifier:             
                   keyid:61:D5:3A:C7:5C:0F:66:FE:D5:EF:5D:A1:94:8F:FD:C2:E5:94:7D:D3 
Certificate is to be certified until Mar 5 01:40:50 2015 GMT (1095 days) 

Write out database with 1 new entries 
Data Base Updated 



[root@CA ~]# ls /etc/CA/private/cakey.pem     #CA私钥
[root@CA ~]# ls /etc/CA/cacert.pem         #CA证书 
[root@CA ~]# ls /etc/CA/careq.pem         #CA证书请求 


配置web服务器 
===============================================================
web 生成自己的私钥 
[root@www ~]# openssl genrsa -des3 -out /etc/httpd/conf.d/server.key         #使用des3保护私钥 
Generating RSA private key, 512 bit long modulus
.........++++++++++++ 
......................++++++++++++ 
e is 65537 (0x10001) 
Enter pass phrase for /etc/httpd/conf.d/server.key:123456 
Verifying - Enter pass phrase for /etc/httpd/conf.d/server.key:123456 

生成证书请求(使用身份标识+公钥) 
[root@www ~]# openssl req -new -key /etc/httpd/conf.d/server.key -out /tmp/server.csr 
Enter pass phrase for /etc/httpd/conf.d/server.key:123456 
You are about to be asked to enter information that will be incorporated into your certificate
request.                    
What you are about to enter is what is called a Distinguished Name or a DN. 
There are quite a few fields but you can leave some blank 
For some fields there will be a default value, 
If you enter '.', the field will be left blank. 
----- 
------------------------------------------------------------------------------- 
Country Name (2 letter code) [GB]:CN                         #这部分信息要与CA一致 !!!
State or Province Name (full name) [Berkshire]:BEIJING 
Locality Name (eg, city) [Newbury]:HD 
Organization Name (eg, company) [My Company Ltd]:UPLOOKING 
Organizational Unit Name (eg, section) []:IT 
------------------------------------------------------------------------------- 
Common Name (eg, your name or your server's hostname) []:www.uplooking.com 
Email Address []:www@uplooking.com 

Please enter the following 'extra' attributes to be sent with your certificate request 
A challenge password []: 
An optional company name []: 

将证书请求发送给CA 
[root@www ~]# scp /tmp/server.csr CA.uplooking.com:/tmp/ 



CA服务器对证书请求进行数字签名 
=============================================================================  
[root@CA ~]# openssl ca -keyfile /etc/CA/private/cakey.pem -cert /etc/CA/cacert.pem -in /tmp/server.csr -out /tmp/server.crt

   /etc/CA/private/cakey.pem     (这是ca的私钥) 
   /tmp/server.csr             (httpserver的证书请求文件) 
   /etc/CA/cacert.pem           (ca的证书) 
   /tmp/server.crt             (生成的httpserver的证书的名字) 

Using configuration from /etc/pki/tls/openssl.cnf 
Enter pass phrase for /etc/CA/private/cakey.pem: 
Check that the request matches the signature 
Signature ok 
Certificate Details: 
       Serial Number: 1 (0x1) 
       Validity 
           Not Before: Mar 5 02:20:56 2012 GMT
           Not After : Mar 5 02:20:56 2013 GMT 
       Subject:
           countryName = CN
           stateOrProvinceName = BEIJING
           organizationName = UPLOOKING
           organizationalUnitName = IT
           commonName = www.uplooking.com
           emailAddress = www@uplooking.com 
       X509v3 extensions: 
           X509v3 Basic Constraints: 
               CA:TRUE 
           Netscape Comment: 
               OpenSSL Generated Certificate 
           X509v3 Subject Key Identifier: 
               D0:6E:C7:7D:FC:BE:0D:62:CA:B9:A2:E0:2A:9A:27:32:39:0B:91:F8 
           X509v3 Authority Key Identifier: 
               keyid:61:D5:3A:C7:5C:0F:66:FE:D5:EF:5D:A1:94:8F:FD:C2:E5:94:7D:D3 
Certificate is to be certified until Mar 5 02:20:56 2013 GMT (365 days) 
Sign the certificate? [y/n]:y 

1 out of 1 certificate requests certified, commit? [y/n]y 
Write out database with 1 new entries 
Data Base Updated 

将签名后的数字证书颁发给web 
[root@CA ~]# scp /tmp/server.crt www.uplooking.com:/etc/httpd/conf.d/ 




配置web支持ssl实现https 
========================================================== 
[root@www ~]# yum install httpd mod_ssl 
[root@www ~]# vim /etc/httpd/conf.d/ssl.conf 
SSLCertificateFile /etc/httpd/conf.d/server.crt 
SSLCertificateKeyFile /etc/httpd/conf.d/server.key 

[root@www ~]# netstat -tunpl | grep 443 
tcp 0 0 :::443 :::* LISTEN 2000/httpd 

Client下载CA证书并导入到浏览器,然后访问www服务器
==================================================================================
client需要下载CA证书并导入浏览器,使用https访问web,浏览器验证web数字证书是否由CA颁发 打开firefox,编辑------>首选项----->高级----> 加密----->查看证书------>导入


如果还有不明白怎么生产openssl证书的可以去看下我的这篇文章:

http://sangh.blog.51cto.com/6892345/1355878  我在上次的时候就发表了大家可以看看


本文转自Devin 51CTO博客,原文链接:http://blog.51cto.com/devingeng/1384464

相关文章
|
1月前
|
安全 网络协议 网络安全
HTTPS:保护你的网站免受中间人攻击的关键技术
【6月更文挑战第13天】HTTPS是抵御中间人攻击的关键技术,通过数据加密、身份验证和完整性保护保障网络安全。它基于SSL/TLS协议加密通信,防止数据被窃取或篡改,并使用数字证书确认服务器身份,避免伪造。要确保HTTPS安全,需使用有效数字证书,启用强制HTTPS,定期更新维护并限制访问范围。
|
27天前
|
监控 安全 网络安全
探讨网站加密访问的安全性问题:HTTPS的防护与挑战
**探讨HTTPS在网站加密中的角色,提供数据加密和身份验证,防范中间人攻击。心脏滴血漏洞示例显示持续维护的必要性。面临证书管理、性能影响和高级攻击挑战,应对措施包括更新、HSTS策略及用户教育。HTTPS是安全基础,但需不断优化以应对新威胁。**
40 2
|
1月前
|
网络协议 安全 应用服务中间件
阿里云 网站https设置 sll申请与nginx跳转配置
阿里云 网站https设置 sll申请与nginx跳转配置
50 0
|
2月前
|
安全 算法 网络协议
HTTPS:如何确保您的网站数据传输安全?
HTTPS:如何确保您的网站数据传输安全?
|
2月前
|
前端开发 应用服务中间件 网络安全
nginx配置SSL证书配置https访问网站 超详细(附加配置源码+图文配置教程)
nginx配置SSL证书配置https访问网站 超详细(附加配置源码+图文配置教程)
363 0
|
2月前
|
数据采集 测试技术 网络安全
阿萨聊测试 ZAP3:如何测试HTTPS的Web网站?
阿萨聊测试 ZAP3:如何测试HTTPS的Web网站?
阿萨聊测试 ZAP3:如何测试HTTPS的Web网站?
|
2月前
|
安全 JavaScript API
深入理解 HTTP 和 HTTPS:提升你的网站安全性(下)
深入理解 HTTP 和 HTTPS:提升你的网站安全性(下)
深入理解 HTTP 和 HTTPS:提升你的网站安全性(下)
|
2月前
|
缓存 安全 网络安全
深入理解 HTTP 和 HTTPS:提升你的网站安全性(上)
深入理解 HTTP 和 HTTPS:提升你的网站安全性(上)
深入理解 HTTP 和 HTTPS:提升你的网站安全性(上)
|
2月前
|
API 数据安全/隐私保护
如何使用Postman 测试Https 网站?
如何使用Postman 测试Https 网站?
270 0
|
2月前
|
缓存 前端开发 应用服务中间件
https证书已经部署到宝塔,但访问网站还显示不生效问题解决
https证书已经部署到宝塔,但访问网站还显示不生效问题解决
148 0