Linux下https的搭建总结

简介:

TLS:传输层安全协议 Transport Layer Security的缩写

SSL:安全套接字层 Secure Socket Layer的缩写

TLS与SSL对于不是专业搞安全的开发人员来讲,可以认为是差不多的,这二者是并列关系,详细差异见 http://kb.cnblogs.com/page/197396/

KEY 通常指私钥。

CSR 是Certificate Signing Request的缩写,即证书签名请求,这不是证书,可以简单理解成公钥,生成证书时要把这个提交给权威的证书颁发机构。

CRT 即 certificate的缩写,即证书。

X.509 是一种证书格式.对X.509证书来说,认证者总是CA或由CA指定的人,一份X.509证书是一些标准字段的集合,这些字段包含有关用户或设备及其相应公钥的信息。

X.509的证书文件,一般以.crt结尾,根据该文件的内容编码格式,可以分为以下二种格式:

PEM - Privacy Enhanced Mail,打开看文本格式,以"-----BEGIN..."开头, "-----END..."结尾,内容是BASE64编码.
Apache和*NIX服务器偏向于使用这种编码格式.

DER - Distinguished Encoding Rules,打开看是二进制格式,不可读.
Java和Windows服务器偏向于使用这种编码格式

OpenSSL 相当于SSL的一个实现,如果把SSL规范看成OO中的接口,那么OpenSSL则认为是接口的实现。接口规范本身是安全没问题的,但是具体实现可能会有不完善的地方,比如之前的"心脏出血"漏洞,就是OpenSSL中的一个bug.

 

openssl 给自己颁发证书的步骤:

前提:先建一个cert目录,cd到该目录,以下所有命令的当前路径均为该目录

1. 生成私钥KEY

1
openssl genrsa -des3 -out server.key 2048

这一步执行完以后,cert目录下会生成server.key文件

2. 生成证书请求文件CSR

1
openssl req -new -key server.key -out server.csr

该命令先进入交互模式,让你填一堆东西,参考下图:

要注意的是Common Name这里,要填写成使用SSL证书(即:https协议)的域名或主机名,否则浏览器会认为不安全。例如:如果以后打算用https://yjm-docker/xxx 这里就填写yjm-docker

3. 生成CA的证书

前面提过X.509证书的认证者总是CA或由CA指定的人,所以得先生成一个CA的证书

1
openssl req -new -x509 -key server.key -out ca.crt -days 3650

4. 最后用第3步的CA证书给自己颁发一个证书玩玩

1
2
3
openssl x509 -req -days 3650 - in  server.csr \
   -CA ca.crt -CAkey server.key \
   -CAcreateserial -out server.crt

执行完以后,cert目录下server.crt 就是我们需要的证书。当然,如果要在google等浏览器显示出安全的绿锁标志,自己颁发的证书肯定不好使,得花钱向第三方权威证书颁发机构申请(即:第4步是交给权威机构来做,我们只需要提交server.key、server.csr,哦,还有毛爷爷就好了)

[root@ www.linuxidc.com certs]#yum install mod_ssl*改变文件的权限增加安全性

[root@ www.linuxidc.com certs]#vim /etc/httpd/conf.d/ssl.conf  捆绑证书文件和钥匙文件

112 SSLCertificateFile/etc/httpd/certs/httpd.cert

119 SSLCertificateKeyFile/etc/httpd/certs/httpd.key

128 SSLCertificateChainFile/etc/httpd/certs/cacert.pem

wKioL1bfgs3TohtpAAD0BYIwsLY923.png

wKioL1bfgs7irFjeAABzHk8gQSU435.png

wKiom1bfgkzAeYa-AAC_hY45fhE497.png

wKioL1bfgtCwyzlhAACzHwHtN7M675.png

wKiom1bfgk7Cg7HbAABhyOgpMUU729.png

192.168.1.200www.abc.com

wKioL1bfgvjStMPnAAFk6eM2WQs162.png

[root@ www.linuxidc.com certs]#netstat -tupln |grep httpd

tcp       0      0:::80                      :::*                       LISTEN     5544/httpd         

tcp       0      0:::443                     :::*                       LISTEN      5544/httpd    

wKiom1bfgpnTN-0MAAE5zZiPEeU017.png

关闭原来的80端口

[root@ www.linuxidc.com certs]# vim/etc/httpd/conf/httpd.conf

134 #Listen 80 注释掉该行

[root@ www.linuxidc.com certs]# servicehttpd restart

Stoppinghttpd:                                           [  OK  ]

Startinghttpd:                                           [  OK  ]

[root@ www.linuxidc.com certs]# netstat-tupln|grep httpd

tcp       0      0:::443                     :::*                       LISTEN      5483/httpd

wKioL1bfgz-jCGE9AAGimBntlc8163.png

wKiom1bfgr6gnldBAAFhdig441Y573.png

这样www.abc.com就只能够使用https进行访问啦

 

补充:

一:为www.abc.com 颁发证书192.168.1.200的主机

[root@zzu certs]#vim/etc/httpd/conf.d/ssl.conf

nameVirtualHost 192.168.1.200:443

<VirtualHost 192.168.1.200:443> 
DocumentRoot "/var/www/html" 
ServerName www.abc.com:443 
ErrorLog logs/ssl_error_log 
TransferLog logs/ssl_access_log 
LogLevel warn 
SSLEngine on 
SSLProtocol all -SSLv2 
SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW 
SSLCertificateFile /etc/httpd/certs/httpd.cert 
SSLCertificateKeyFile /etc/httpd/certs/httpd.key 
SSLCertificateChainFile /etc/pki/CA/cacert.pem 
<Files ~ "\.(cgi|shtml|phtml|php3?)$"> 
    SSLOptions +StdEnvVars 
</Files> 
<Directory "/var/www/cgi-bin"> 
    SSLOptions +StdEnvVars 
</Directory> 
SetEnvIf User-Agent ".*MSIE.*" \ 
         nokeepalivessl-unclean-shutdown \ 
         downgrade-1.0force-response-1.0 
CustomLog logs/ssl_request_log \ 
          "%t %h%{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b" 
</VirtualHost>

 

二:为 tec.abc.com 颁发证书192.168.1.100的主机

[root@zzu certs]#vim/etc/httpd/conf.d/ssl.conf

<VirtualHost 192.168.1.100:443> 
DocumentRoot "/var/www/tec" 
ServerName tec.abc.com:443 
ErrorLog logs/ssl_error_log 
TransferLog logs/ssl_access_log 
LogLevel warn 
SSLEngine on 
SSLProtocol all -SSLv2 
SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW 
SSLCertificateFile /etc/httpd/certs/httpd1.cert 
SSLCertificateKeyFile /etc/httpd/certs/httpd1.key 
SSLCertificateChainFile /etc/pki/CA/cacert.pem 
<Files ~ "\.(cgi|shtml|phtml|php3?)$"> 
    SSLOptions +StdEnvVars 
</Files> 
<Directory "/var/www/cgi-bin"> 
    SSLOptions +StdEnvVars 
</Directory> 
SetEnvIf User-Agent ".*MSIE.*" \ 
         nokeepalivessl-unclean-shutdown \ 
         downgrade-1.0force-response-1.0 
CustomLog logs/ssl_request_log \ 
          "%t %h%{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b" 
</VirtualHost>

1). 看SSLCertificateFile,SSLCertificateKeyFile两个配置项,所以应该在httpd下建立子目录certs,然后把签署过的证书文件(.cert)和私钥文件(.key)放在相应的目录 
2). 看DocumentRoot,ServerName配置项,ServerName修改为任意你想要得域名,注意:前面生成.csr时输入的Common Name必须于这里的ServerName项一致。 
这样启动apache后,访问https://www.my.com将访问/var/www/tec目录下的内容。 
3). 移除注释行 
LoadModule ssl_module modules/mod_ssl.so 



本文转自 转身撞墙角 51CTO博客,原文链接:http://blog.51cto.com/chentianwang/1749013

相关文章
|
算法 Linux 网络安全
Centos7 Linux系统下生成https的crt和key证书
Centos7 Linux系统下生成https的crt和key证书
828 0
|
9月前
|
安全 网络协议 Linux
Linux网络应用层协议展示:HTTP与HTTPS
此外,必须注意,从HTTP迁移到HTTPS是一项重要且必要的任务,因为这不仅关乎用户信息的安全,也有利于你的网站评级和粉丝的信心。在网络世界中,信息的安全就是一切,选择HTTPS,让您的网站更加安全,使您的用户满意,也使您感到满意。
262 18
|
Web App开发 Linux 应用服务中间件
【DrissionPage】Linux上如何将https改为http
通过上述步骤,可以在Linux上将DrissionPage从HTTPS改为HTTP。关键在于修改DrissionPage配置、代码中的HTTPS设置、URL以及Web服务器配置,确保所有部分都正确使用HTTP协议。通过合理配置和测试,能够确保系统在HTTP环境下稳定运行。
550 1
|
安全 算法 网络协议
【在Linux世界中追寻伟大的One Piece】HTTPS协议原理
【在Linux世界中追寻伟大的One Piece】HTTPS协议原理
188 2
|
Linux Python
【Azure 应用服务】Azure App Service For Linux 上实现 Python Flask Web Socket 项目 Http/Https
【Azure 应用服务】Azure App Service For Linux 上实现 Python Flask Web Socket 项目 Http/Https
293 0
|
存储 Linux Docker
Could not fetch/save url https://download.docker.com/linux/centos/docker-ce.repo
CentOS 安装Docker时,将 Docker 官方的 YUM 存储库添加到 CentOS 系统中出现错误。
2212 0
|
JSON 安全 网络协议
【Linux 网络】网络基础(二)(应用层协议:HTTP、HTTPS)-- 详解
【Linux 网络】网络基础(二)(应用层协议:HTTP、HTTPS)-- 详解
|
应用服务中间件 Linux 网络安全
Linux【脚本 06】HTTPS转发HTTP安装OpenSSL、Nginx(with-http_ssl_module)及自签名的X.509数字证书生成(一键部署生成脚本分享)
Linux【脚本 06】HTTPS转发HTTP安装OpenSSL、Nginx(with-http_ssl_module)及自签名的X.509数字证书生成(一键部署生成脚本分享)
455 1
|
算法 安全 Linux
Linux网络-HTTPS协议
Linux网络-HTTPS协议