赞
踩
最近公司项目考虑到安全性要使用
https
,于是领导就把这个任务交给了我,今天就一次性搞懂https如何配置。
超文本传输协议
HTTP协议被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此,HTTP协议不适合传输一些敏感信息,比如:信用卡号、密码等支付信息。
为了解决HTTP协议
的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议HTTPS,为了数据传输的安全,HTTPS在HTTP的基础上加入了SSL/TLS协议,SSL/TLS依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。
也就是说https在进行数据加密传输、身份认证等网络协议中要比http安全的多。
因为公司使用的是Apache服务,所以我就用它来演示,考虑到一些小伙伴可能没有使用过Apache服务,这里我带领大家一起来安装一下。
ssh iyongbao@10.xx.xx.xx
password:
iyongbao
是我们服务器的主机名,@
后面是服务器ip
通过yum
来下载安装apache
[root@iyongbao ~]# yum install httpd -y
# 启动apache
[root@iyongbao ~]# systemctl start httpd
# 设置开机自启动
[root@iyongbao ~]# systemctl enable httpd
# 查看服务是否启动
[root@iyongbao ~]# netstat -lntp |grep http
tcp6 0 0 :::443 :::* LISTEN 1368511/httpd
tcp6 0 0 :::80 :::* LISTEN 1368511/httpd
因为我这里是配置好https服务了,所以端口有一个443在运行。
访问网站
通过域名
或ip
就可以访问到apache的默认页,apache的默认端口
是80
,后面我们会让80
强制跳转到443
。
apache项目路径
上边显示的内容是apache的默认页,我们可以找到它的路径。
# 配置web页面(apache默认web路径)
[root@iyongbao ~]# cat /var/www/html/index.html
# 通过配置这个文件可以改变我们的端口和项目路径
[root@iyongbao ~]# cat /etc/httpd/conf/httpd.conf
# DocumentRoot: The directory out of which you will serve your
DocumentRoot "/var/www/html"
注意:当你修改了配置文件之后记得要重启
[root@iyongbao ~]# systemctl restart httpd
证书如果是工作中,一般公司都会去申请,这里我也是直接使用申请下来的。
# 安装mod_ssl模块
[root@iyongbao ~]# yum install mod_ssl -y
#查看安装的mod_ssl
[root@iyongbao ~]# rpm -qa mod_ssl
mod_ssl-2.4.57-5.el9.x86_64
# 创建证书的存放目录
[root@iyongbao ~]# mkdir /etc/httpd/ssl
[root@iyongbao ~]# ll /etc/httpd/
当我们安装好mod_ssl
模块后,在我们的/etc/httpd/conf.d
目录下会生成一个ssl.conf
,下面我们来配置一下这个文件。
# ssl.conf [root@iyongbao ~]# egrep '^[^#]' /etc/httpd/conf.d/ssl.conf Listen 443 https SSLPassPhraseDialog exec:/usr/libexec/httpd-ssl-pass-dialog SSLSessionCache shmcb:/run/httpd/sslcache(512000) SSLSessionCacheTimeout 300 SSLRandomSeed startup file:/dev/urandom 256 SSLRandomSeed connect builtin <VirtualHost _default_:443> ServerName utouch-vn-qms-api.ces.myfiinet.com ErrorLog logs/ssl_error_log TransferLog logs/ssl_access_log LogLevel warn SSLEngine on #启用SSL功能 SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1 SSLCipherSuite HIGH:!aNULL:!MD5:!SEED:!IDEA # 配置证书 SSLCertificateFile /etc/httpd/www.iyognbao.cn.crt SSLCertificateKeyFile /etc/httpd/www.iyongbao.cn.key SSLCertificateChainFile /etc/httpd/ssl/root_url.crt # 配置项目的路径 <Directory /var/www/my-project> Options Indexes FollowSymLinks AllowOverride All Order deny,allow Allow from all </Directory> </VirtualHost> #重启apache服务 [root@iyongbao ~]# systemctl restart httpd
配置好就可以使用https去访问我们的网站了。
https://www.xxxxxx.cn/
可以看到我们的网站已经成功上锁了,到此https配置成功。
当我们不以
https://
开头时,默认是去访问apache
的80(http)
端口,但是为了安全我们要http
去跳转到https
上,已达到安全的目的。
修改ssl.conf
文件
# /etc/httpd/conf.d/ssl.conf
<VirtualHost *:80>
ServerName www.iyongbao.cn
RewriteEngine on
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^/?(.*)$ https://%{SERVER_NAME}/$1 [L,R]
</VirtualHost>
#重启apache服务
[root@iyongbao ~]# systemctl restart httpd
这篇文章意在让大家了解https是如何配置的,对于技术其实也是一种增长,虽然我们不需要经常配置它,但是掌握了肯定没有坏事。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。