IE跨域、socketio(securityerror,io未定义)、windows下Apache配置证书

windows下Apache配置ssl:根据https://www.cnblogs.com/fps2tao/p/9540700.html大佬参考的。


windows python-flask-socketio(前后端):

之前公司用的tornado.websocket我不太熟悉,就选用了相对熟悉的轻量级框架flask实现实时通信。

1、后端:使用filask-socketio框架实现websocket,可以支持ie10以上及其他谷歌,搜狐等浏览器。

  • flask的跨域就不说了,这个是socketio设置跨域的方式:
  • 最好都写上。
    async_mode = None
    app = Flask(name)
    app.config[‘SECRET_KEY’] = ‘secret!’
    socketio = SocketIO(app, cors_allowed_origins=’*’)

2、前端:前端建议使用最新的socket.io.jshttps://cdnjs.com/libraries/socket.io

旧版本的socket.io.js对IE浏览器很不友好会有各种各样的错误。

  • io未定义,要在每个使用io的js前面导入socket.io.js
  • securityerror用了网上的方法没什么用,直接使用了了最高版本的socket.io.js(自己判断websocket出错就使用轮询、长连接)

windows下Apache配置ssl:

  1. 修改conf/httpd.conf

取消ssl及proxy相关注释

#LoadModule ssl_module modules/mod_ssl.so (去掉前面的#号)
#Include conf/extra/httpd-ssl.conf (去掉前面的#号)
#LoadModule proxy_module modules/mod_proxy.so (去掉前面的#号)
#LoadModule proxy_http_module modules/mod_proxy_http.so (去掉前面的#号)
  1. 生成证书

cmd进入命令行,进入apache安装目录的bin目录。

2.1 设置OPENSSL_CONFIG配置

执行命令:set OPENSSL_CONF=..\conf\openssl.cnf

2.2 生成服务端的key文件

执行命令:openssl genrsa -out server.key 1024

完成后,会在bin目录下生成server.key文件

2.3 生成签署申请

执行命令:openssl req -new -out server.csr -key server.key

依次输入cn、beijing、beijing、baiu、baiu、localhost(此处要和配置文件中httpd-ssl,conf的ServerName一致)、直接回车、 直接回车、直接回车

完成后,会在bin目录下生成server.csr文件,其中 Common Name <eg,YOUR name>[] 需要与配置文件中的ServerName一致,否则apache启动时将会报错。

2.4 生成CA的key文件

执行命令:openssl genrsa -out ca.key 1024

完成后,会在目录bin下生成ca.key文件

2.5 生成CA自签署证书

执行命令:openssl req -new -x509 -days 365 -key ca.key -out ca.crt

依次输入cn、beijing、beijing、baiu、baiu、localhost(此处要和配置文件中httpd-ssl,conf的ServerName一致)、直接回车、 直接回车、直接回车

完成后,会在目录bin下生成ca.crt文件,此处填写的信息与2.3步中类似。

2.6 生成CA的服务器签署证书

执行命令:openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key

依次输入:y、y

此处如果没有创建好相关目录,将会报错,执行以下内容:

根据提示,手动创建相关目录:
在bin下新建demoCA文件夹
bin/demoCA
在demoCA下新建index.txt
bin/demoCA/index.txt
在demoCA下新建serial.txt,其内容为01,重命名删除.txt后缀
bin/demoCA/serial
在demoCA下新建newcert文件夹
bin/demoCA/newcerts
完成后,会在bin目录下生成server.crt文件。demoCA目录的最终结构
  1. 修改conf/extra/httpd-ssl.conf文件

3.1 修改https端口号

根据需要修改httpd-ssl.conf的默认端口号"443",这里将所有的443修改为"6443",同时修改ServerName。

具体如下:
Listen 6443
<VirtualHost _default_:6443>
ServerName localhost
提示:此处如果保持https默认的443端口,则访问的时候,无需再加端口号。

3.2 修改相关证书路径

在apache安装目录的conf目录下,新建一个key目录,名称随意,然后将bin目录中的相关证书复制到key目录中。key目录最终的文件结构如下:

接着修改conf/extra/httpd-ssl.conf文件中的如下内容:
SSLCertificateFile "xxx/conf/key/server.crt"
SSLCertificateKeyFile "xxx/conf/key/server.key"
SSLCACertificateFile "xxx/conf/key/ca.crt"
#SSLVerifyClient require (去掉前面的#号,进行客户端验证时需要)
#SSLVerifyDepth 1 (去掉前面的#号,把10改为1,进行客户端验证时需要)
  1. 重启apache

在浏览器中,输入https://localhost:6443,如果页面出现提示 It works! ,则说明https配置成功了。如图:

  1. 项目部署方式

修改conf/extra/httpd-vhosts.conf,新增内容如下:

NameVirtualHost *:6443

注意:

httpd-vhosts.conf配置文件中原有的NameVirtualHost *:80不要修改,下面新增一行即可。

NameVirtualHost *:6443

此处标注一下有一些机器配置不是NameVirtualHost,而是一个<VirtualHost _default_:80>,这种情况下吧自己的注释了,改为NameVirtualHost *:80和NameVirtualHost *:6443就行

5.1 以https的方式部署项目

在conf/extra/httpd-vhosts.conf配置文件中,新增如下内容:

<VirtualHost *:6443>
    ServerName localhost
    DocumentRoot D:/javapro/bms
    SSLEngine on
    SSLProxyEngine on
    SSLCertificateFile "D:/myplatform/Apache2.2/conf/key/server.crt"
    SSLCertificateKeyFile "D:/myplatform/Apache2.2/conf/key/server.key"
    <Directory "/">
        Options None
        AllowOverride All
        Order allow,deny
        Allow From All
    </Directory>
</VirtualHost>

上面的配置含义是,在浏览器中输入https://localhost:6443,即可访问DocumentRoot对应目录下的项目。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值