phpstudy双向认证https证书Nginx

这篇文章是本人在开发过程中的总结,分为4个标题;

1.安装集成环境,配置文件

phpStudy是一个PHP调试环境的程序集成包
该程序包集成最新的Apache+PHP+MySQL+NIGINX+phpMyAdmin+ZendOptimizer,一次性安装,无须配置即可使用,是非常方便、好用的PHP调试环境.该程序不仅包括PHP调试环境,还包括了数据库、开发工具、开发手册等.。同时phpStudy还自带有openssl工具(我们证书生成所要用到的);
下载地址:http://phpstudy.php.cn/
本人用过8版本,没有旧版本本地认证证书方便,所以这篇主要记录旧版本phpstudy;

下载2018版本,正常启动客户端
在这里插入图片描述
默认的服务器是php+apache,在这我选择了用nginx服务器:切换为php5.6+Nginx

在这里插入图片描述
服务器切换完毕之后,打开vhosts文件,更改配置文件

在这里插入图片描述
根据自己的路径配置

server {
        listen      443 ssl;      #http的端口号是80,https的端口为443
        server_name  www.test.com #服务器域名 配置多个时不要添加;号即可,
    ServerName 127.0.0.1
    ServerName 192.168.1.107;     #本机电脑的ip地址
    ssl on;   #开启ssl
    ssl_certificate C:\Users\Administrator\Desktop\新建文件夹(2)\server.cer;     #服务器证书文件
    ssl_certificate_key C:\Users\Administrator\Desktop\新建文件夹(2)\server.key; #服务器证书密匙
    ssl_client_certificate C:\Users\Administrator\Desktop\新建文件夹(2)\ca.cer;  #根证书
    ssl_verify_client on; #开启客户端验证
  location / {
            root   F:\PHPStudy\PHPTutorial\WWW;   #本地网站文件目录
            index  index.HTML index.html index.htm ;
        }       
}

到这已经配置完成,重启phpStudy;

2.生成证书

ssl证书生成一般可以通过2种工具:java环境下的keytool和openssl,个人感觉openssl比较好用,看个人习惯,下面以单独下载openssl举例;单独下载openssl的话需要配置环境,这点可以自行百度进行配置!
现在开始生成证书,因为刚才配置的证书路径在桌面的证书文件夹中,所以在桌面创建一个空的证书文件夹;

win系统下新建一个文件夹用系统管理员打开windows.powershell界面:
在这里插入图片描述
在这里插入图片描述
开始正式生成证书:
1.CA私钥: ca.key

openssl genrsa -out ca.key 1024

在这里插入图片描述
2.创建根证书请求文件ca.csr

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

这里需要填入配置信息:

Country Name (2 letter code) [AU]:cn 国家名(2个字母的代号)
State or Province Name (full name) [Some-State]: sx 省
Locality Name (eg, city) []:xa 市
Organization Name (eg, company) [Internet Widgits Pty Ltd]:xx 公司名
Organizational Unit Name (eg, section) []:xx  组织或部门名
Common Name (eg, YOUR name) []:test.com  域名(尽量用服务器域名,不然会引起服务器警告)
Email Address []:   邮箱地址(不填直接回车)
A challenge password []:123456 密码
An optional company name []:xx  公司名

在这里插入图片描述
3.自签根证书ca.cer

openssl x509 -req -in ca.csr -out ca.cer -signkey ca.key -CAcreateserial -days 3650

在这里插入图片描述
4.生成p12格式根证书ca.p12(密码填写123456,之前ca.csr的密码,ps:这里输入的时候是不可见的输入完成后回车即可)

openssl pkcs12 -export -clcerts -in ca.cer -inkey ca.key -out ca.p12

在这里插入图片描述
5.生成服务端key server.key,这个需要phpstudy安装目录下找到apache的bin

F:\PHPStudy\PHPTutorial\Apache\bin\openssl genrsa -out server.key 1024

在这里插入图片描述
6.生成服务端请求文件 server.csr

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

填入证书配置信息:

Country Name (2 letter code) [AU]:cn 国家名(2个字母的代号)
State or Province Name (full name) [Some-State]:sx 省
Locality Name (eg, city) []:xa 市
Organization Name (eg, company) [Internet Widgits Pty Ltd]:xxx 公司名
Organizational Unit Name (eg, section) []:xxx  组织或部门名
Common Name (eg, YOUR name) []:test.com  域名(尽量用服务器域名,不然会引起服务器警告)
Email Address []:   邮箱地址
A challenge password []:123456 密码
An optional company name []:xx  公司名

在这里插入图片描述
7.生成服务端证书server.cer(ca.cer,ca.key,servr.key,server.csr这4个生成服务端证书):

openssl x509 -req -in server.csr -out server.cer -signkey server.key -CA ca.cer -CAkey ca.key -CAcreateserial -days 3650

在这里插入图片描述
8.生成客户端key client.key:

openssl genrsa -out client.key 1024

在这里插入图片描述
9.生成客户端请求文件client.csr:

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

填入证书配置信息:

Country Name (2 letter code) [AU]:cn 国家名(2个字母的代号)
State or Province Name (full name) [Some-State]:sx 省
Locality Name (eg, city) []:xa 市
Organization Name (eg, company) [Internet Widgits Pty Ltd]:xxx 公司名
Organizational Unit Name (eg, section) []:xxx  组织或部门名
Common Name (eg, YOUR name) []:ty1  签发机构\开发者人员(这里随意)
Email Address []:   邮箱地址
A challenge password []:123456 密码
An optional company name []:xxx  公司名

在这里插入图片描述
10.生成客户端证书 client.cer:

openssl x509 -req -in client.csr -out client.cer -signkey client.key -CA ca.cer -CAkey ca.key -CAcreateserial -days 3650

在这里插入图片描述
11.生成客户端p12格式根证书client.p12(密码设置123456):

openssl pkcs12 -export -clcerts -in client.cer -inkey client.key -out client.p12

在这里插入图片描述
至此,证书就制作完毕了:这个是新建文件夹里面的东西
在这里插入图片描述

3.完成之后测试部分

以本地服务器为例(我的本地域名配置的是www.test.com):
浏览器打开浏览器输入https://www.test.com/出现下面的界面,这是现在还没有导入证书服务器拒绝访问:
在这里插入图片描述

打开浏览器设置-高级-管理证书-导入-下一步-浏览(选择证书路劲,选中client.p12,文件类型那里改为全部类型就可以看到p12文件了)-输入p12证书密码-下一步一直至完成即可-导入完成后重启浏览器-输入https://www.test.com/-弹出证书导入弹窗选择确定-正常访问目标网页!
在这里插入图片描述
在这里插入图片描述
到此已经完成http转https双向认证证书完成;

4.注意:

如果需要真实应用场景我们需要在CA机构颁发证书,当我们将http转为https时,请求所有资源也必须为https,不然会安全阻塞,例:前后端分离的情况下,必须将WebAPI接口也转换为https协议;当然,还有其他办法,具体的资料也有不少,这是本人自己开发过程中遇到的,分享给大家。

   补充:本文章方法其实可以适用所有的https搭建,只不过我是为了方便在phpstudy搭建,tomcat等其实方法都差不多,有不足地方请指教!!!
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值