phpstudy配置ssl证书实现https加密访问

0x00 前言

使用HTTP(超文本传输)协议访问互联网上的数据是没有经过加密的。也就是说,任何人都可以通过适当的工具拦截或者监听到在网络上传输的数据流。但是有时候,我们需要在网络上传输一些安全性或者私秘性的数据,譬如:包含信用卡及商品信息的电子订单。这个时候,如果仍然使用HTTP协议,势必会面临非常大的风险!相信没有人能接受自己的信用卡号在互联网上裸奔。

HTTPS(超文本传输安全)协议无疑可以有效的解决这一问题。所谓HTTPS,其实就是HTTP和SSL/TLS的组合,用以提供加密通讯及对网络服务器的身份鉴定。HTTPS的主要思想是在不安全的网络上创建一安全信道,防止黑客的窃听和攻击。

 

0x01 使用openssl生成x509签名证书

x509证书一般会用到三类文,key,csr,crt

  • key是服务器上的私钥文件,用于对发送给客户端数据的加密,以及对从客户端接收到数据的解密,通常是rsa算法
  • csr 是证书签名请求文件,用于申请证书。在制作csr文件的时,必须使用自己的私钥来签署申,还可以设定一个密钥。
  • crt是由证书颁发机构(CA)签名后的证书,或者是开发者自签名的证书,包含证书持有人的信息,持有人的公钥,以及签署者的签名等信息
  1. key的生成

    # openssl genrsa -des3 -out server.key 2048

    这样是生成rsa私钥,des3算法,openssl格式,2048位强度。server.key是密钥文件名。为了生成这样的密钥,需要一个至少四位的密码。可以通过以下方法删除私钥中的密码:

    # openssl rsa -in server.key -out server.key

  2. 生成CA的crt
    123456789
    # openssl req -new -key server.key -out server.csrCountry Name (2 letter code) [AU]:CNState or Province Name (full name) [Some-State]:BeijingLocality Name (eg, city) []:BeijingOrganization Name (eg, company) [Internet Widgits Pty Ltd]:TestOrganizational Unit Name (eg, section) []:TestCommon Name (e.g. server FQDN or YOUR name) []:pa55w0rd.onlineEmail Address []:[email protected]

    需要依次输入国家,地区,组织,email。common name可以写你的名字或者域名。如果为了https申请,这个必须和域名吻合,否则会引发浏览器警报。生成的csr文件交给CA签名后形成服务端自己的证书。

  1. crt生成方法
    12345
    # openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crtSignature oksubject=C = CN, ST = Beijing, L = Beijing, O = Test, OU = Test, CN = pa55w0rd.online, emailAddress = [email protected]Getting Private key

    crt上有证书持有人的信息,持有人的公钥,以及签署者的签名等信息。当用户安装了证书之后,便意味着信任了这份证书,同时拥有了其中的公钥。证书上会说明用途,例如服务器认证,客户端认证,或者签署其他证书。当系统收到一份新的证书的时候,证书会说明,是由谁签署的。如果这个签署者确实可以签署其他证书,并且收到证书上的签名和签署者的公钥可以对上的时候,系统就自动信任新的证书。

    最后生成了私用密钥:server.key和自己认证的SSL证书:server.crt

    证书合并:

    cat server.key server.crt > server.pem

  2. 客户端证书文件

    上面三步骤为服务端证书生成步骤,用户配置单向SSL时需要使用的证书文件,如果要配置双向SSL

    证书生成步骤是一样的,最后需要将crt和key合并生成客户端证书安装包 pfx

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

0x02 phpstudy安装ssl证书

  1. 打开php-openssl 选项

    点击【其他选项菜单】按钮→选择【PHP扩展及设置】→选择【PHP扩展】→在【php-openssl】选项上打钩即可。

  2. 使SSL模块生效

    打开phpStudyApacheconfhttpd.conf文件,修改配置文件注意备份

    找到 LoadModule ssl_module modules/mod_ssl.so,去除#注释,使ssl模块生效

    搜索Include conf/vhosts.conf,在其下面增加一条
    Include conf/vhostssl.conf

  3. 在Apache安装目录下创建cert目录,将生产的证书拷贝过来
  4. 在Apache安装目录下conf文件夹中创建一个vhostssl.conf配置文件(文件名要和httpd.conf文件中引用的名称一致)
    123456789101112131415161718192021
    Listen 443443>    DocumentRoot "E:phpStudyWWW"    ServerName #    ServerAlias pa55w0rd.online    ErrorLog "E:phpStudyApachelogserror.log"    TransferLog "E:phpStudyApachelogsaccess.log"    SSLEngine on    SSLProtocol TLSv1 TLSv1.1 TLSv1.2    SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5    SSLCertificateFile "E:phpStudyApachecertserver.pem"    SSLCertificateKeyFile "E:phpStudyApachecertserver.key"    SSLCertificateChainFile "E:phpStudyApachecertserver.pem"  Directory "E:phpStudyWWW">      Options FollowSymLinks ExecCGI      AllowOverride All      Order allow,deny      Allow from all      Require all granted  Directory>
  5. 重启Apache,访问https://xxx 访问正常

0x03 HTTP301重定向到HTTPS

配置完SSL证书,我们需要进行站点301重定向,将http的地址强制跳转到https地址,Apache环境下,在站点根目录添加.htaccess文件

1
2
3
4
RewriteEngine on
RewriteBase /
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R=301]

PS. Windows下不允许创建.开头的文件,可以先创建任意文件,通过copy命令重命名.htaccess

测试自动跳转到https

发布者:常山赵子龙,转载请注明出处:https://www.qztxs.com/archives/science/technology/11477

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022年5月28日 下午11:36
下一篇 2022年5月28日 下午11:37

相关推荐

  • token的使用

    Token,就是令牌,最大的特点就是随机性,不可预测。一般黑客或软件无法猜测出来,那么,Token有什么作用?又是什么原理呢? Token一般用在两个地方: 防止表单重复提交 anti csrf攻击(跨站点请求伪造)   两者在原理上都是通过session token来实现的。当客户端请求页面时,服务器会生成一个随机数Token,并且将Token放...

    技术 2022年5月27日
    1900
  • Burp插件

    burp中除了BApp Store,还有很多好用的第三方插件,这里手机了一些比较好用也是我自己使用的插件,也欢迎留言推荐其他好用的插件以及burp使用的技巧 burp的一些技巧请参考Burp Suite使用中的一些技巧   HackBar ,火狐的hackbar插件收费了,几个替代品都不怎么好用,这个插件功能比火狐的多且强大 reCAPTCHA自动...

    技术 2022年6月13日
    5000
  • use_algolia_search

    去algolia官网注册账号 新建index索引 Blog   在hex项目下安装 1 2 3 4 5 6 7 8 9 10 # npm install hexo-algolia --save # export HEXO_ALGOLIA_INDEXING_KEY=xxxxxxxxxxxxxxxxxxxxxx # hexo algolia INFO ...

    技术 2022年6月2日
    1700
  • 应用开发安全指南

    1.概述 本指南是IT安全保障体系建设规范的一个组成部分,全面阐述了IT系统应用开发整个软件生命周期所必须遵照的设计、编码、测试方面的安全要求,阐述了不同开发环境和编码语言条件下安全开发的相关规范要求。   1.1.目的 本指南针对xxxx应用系统应当遵循的应用开发安全标准进行了规范性说明,旨在指导应用系统设计人员、代码开发人员和安全检查管理人员进...

    技术 2022年5月27日
    1400
  • hoho,这个线程模型有点意思

    Leader-Follower是一种经典的多线程模型。   上图就是L/F多线程模型的状态变迁图,这个线程模型有6个关键点。   关键点一:线程三种状态。 (1)领导中,leading; (2)处理中,processing; (3)追随中,following;   关键点二:N个线程状态各异。 (1)只有1个leading线程(等待任务); (2)...

    2022年5月14日
    2900

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信