zoukankan      html  css  js  c++  java
  • phpStudy集成环境apche+openssl配置本地https

    OpenSSl windows环境搭建

    1. 网上各种文章都说需要下载多个工具,实际上只要一个程序就好,下载地址http://slproweb.com/products/Win32OpenSSL.html 下载后点击下一步直接安装即可
    2. 配置环境变量
    3. 打开命令行程序cmd(以管理员身份运行),进入 Openssl 所在目录,运行以下命令确认是否安装成功。
    openssl 或直接执行 start C:OpenSSL-Win64inopenssl.exe
    

    参考:https://blog.csdn.net/zha6476003/article/details/80900988

    生成证书

    1. 新建Apache24文件夹,并在里面新建cgi-bin、conf、htdocs、logs四个文件夹,在htdocs里面新建index.html,用来一会儿测试,conf文件夹存放我们生成的证书
    2. 把Apacheconf文件夹下的openssl.cnf文件复制到Apache24conf文件夹中
    3. 在Apache24conf文件夹中打开命令窗口,首先要生成服务器端的私钥(key文件):
    set OPENSSL_CONF=openssl.cnf
    
    openssl genrsa -des3 -out server.key 1024
    
    

    之后会需要输入一个server.key,按你自己设定就好,我也用1234

    1. 生成server.csr ,Certificate Signing Request(CSR),生成的csr文件交给CA签名后形成服务端自己的证书.屏幕上将有提示,依照其指示一步一步输入要求的个人信息即可
    openssl req -new -key server.key -out server.csr -config openssl.cnf
    

    server.key为上面设置的1234,下面还有设置key的地方,自行设定,避免记错,可以设置一样1234
    要注意输入的域名
    Commen Name:为httpd-ssl.conf 》 ServerName 中填写的域名,去掉www,例如,local.test.com

    1. 对客户端也作同样的命令生成key及csr文件,输入信息一样即可
    openssl genrsa -des3 -out client.key 1024
    
    openssl req -new -key client.key -out client.csr -config openssl.cnf
    
    1. CSR文件必须有CA的签名才可形成证书.可将此文件发送到verisign等地方由它验证,要交一大笔钱,这里我们可自行生成
    openssl req -new -x509 -keyout ca.key -out ca.crt -config openssl.cnf
    
    1. 在conf中新建demoCA文件夹,进入,新建newcerts文件夹;新建index.txt;新建serial文件,打开后输入01保存即可

    2. 用生成的CA的证书为刚才生成的server.csr,client.csr文件签名

    openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key -config openssl.cnf
    //按设置好的密码输入即可
    openssl ca -in client.csr -out client.crt -cert ca.crt -keyfile ca.key -config openssl.cnf
    
    1. 生成一个ca.pfx
    openssl pkcs12 -export -in ca.crt -inkey ca.key -out ca.pfx
    

    9.有时相同域名重新生成client.csr时会提醒there is already a certificate已经有一个证书了。那就把当前证书撤销:openssl ca -keyfile ca.key -cert ca.crt -revoke .demoCA ewcerts1.pem然后再重新运行即可

    导入证书

    1. 打开IE浏览器
    2. -》工具
    3. -》Internet选项
    4. -》内容
    5. -》证书,按照提示导入,这里要输入刚才生成 .pfx 过程中输入的密码

    注意:刚刚拿到生成的证书进行导入的时候,由于习惯使用谷歌,在测试时,发现已经被谷歌浏览器拦截了,后来发现该证书谷歌不认可,可能它安全性更高吧,后来使用火狐也是导入都被拦截了,最终只有用户IE才成功,要想看效果,可以先用IE

    apache 配置https

    1. 修改配置文件conf/httpd.conf,删掉以下语句前的’#’
    #LoadModule ssl_module modules/mod_ssl.so
    
    #Include conf/extra/httpd-mpm.conf
    
    #Include conf/extra/httpd-ssl.conf
    
    1. 修改配置文件conf/extra/httpd-ssl.conf,把文件中相应选项改成如下,有’#’的删掉
    ServerName local.test.com:443 #(你想设置的访问域名,自定义)
    
    SSLCertificateFile "/Apache24/conf/server.crt"
    
    SSLCertificateKeyFile "/Apache24/conf/server.key"
    
    SSLCACertificateFile "/Apache24/conf/ca.crt"
    
    SSLVerifyClient require
    
    SSLVerifyDepth 1
    

    DocumentRoot "/Apache24/htdocs" 选择你所需绑定项目位置

    1. 最后一步,配置vhosts,加入你自己之前配置的访问域名,比如 locl.test.com
    2. phpsudy 开启php_openssl 扩展
    3. 重启apache,输入httpsd.local.test.com 访问
    4. 如果,重启apache不成功,
    • 检查配置文件路径;
    • 排除则查看443端口是否被占用,占用则取消对应PID进程;
    • 排除则查看日志,phpsutdy错误日志提示,如果有SSLPassPhraseDialog builtin is not supported on Win32,意思是Win32平台不支持加密密钥
    问题解决思路:既然不支持加密,就把server.key的文件解密,同时注释掉httpd-ssl.conf文件中SSLPassPhraseDialog 。
    
    1、复制server.key 为server.key.org
    
    2、对server.key.org解密 openssl rsa -in server.key.org -out server.key s输入密码后解密成功
    
    3、打开httpd-ssl.conf 找到SSLPassPhraseDialog  builtin 在前面加上#
    
    好了,重运行apche,问题解决。
    
  • 相关阅读:
    基于AngularJS的前端云组件最佳实践
    光裁员有什么用,商业变现才是王道
    迄今为止最完整的推送说明书
    个推技术实现原理介绍
    安卓推送——个推服务端api使用误区
    Gerrit代码Review入门实战
    iOS AFNetworking HTTPS 认证
    iOS开发零碎知识点
    Xcode 如何删除过期的Provisioning Profile文件
    一个section刷新 一个cell刷新
  • 原文地址:https://www.cnblogs.com/maomojun/p/10196881.html
Copyright © 2011-2022 走看看