标签 ssl 下的文章

折腾了2个多小时,已经可以用了,虽然还是有点小问题,但已经可以用了,毕竟我的目的不是折腾这个,而是被迫搭建本地HTTPS来测试geolocation api

网上教程很多,尤其是xampp自带的那个makecert,但我本地死活搞不定,各种报错。后来是用cygwin这个神器解决了。

具体情况如下:

大前提:要把php.ini里的openssl选项给开了。当然,肯定还有其他东西也要开,这个就下次再说吧,因为我在设置这个ssl的时候,很多选项已经开了。

首先,如果你写代码调用geolocation这个api,会失败的,因为本地不是https环境,chrome console里给出一个链接。但这个链接里,我只用了2行代码,就是生成ssl证书的代码,在cygwin里生成。

https://mail.mozilla.org/pipermail/web-vr-discuss/2016-July/001272.html

openssl genrsa -out server.key 2048
openssl req -new -x509 -sha256 -key server.key -out server.pem -days 365

注意,这里生成的是server.pem,但是呢,其他教程都用server.crt,这俩就算作是一个意思吧,都是证书。

其次,在apache vhost里设置如下:

<VirtualHost *:80>
    ##ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot "D:\xamppwww\www\cardio\public"
    ServerName cardio.com
    ServerAlias www.cardio.com

    RewriteEngine On
    RewriteRule ^/(.*)$ https://cardio.com/$1 [R=301,L]
    ##ErrorLog "logs/dummy-host.example.com-error.log"
    ##CustomLog "logs/dummy-host.example.com-access.log" common
</VirtualHost>

<VirtualHost *:443>
    DocumentRoot "D:\xamppwww\www\cardio\public"
    ServerName cardio.com

    SSLEngine on
    SSLCertificateFile "D:\xampp\apache\conf\ssl\server.pem"
    SSLCertificateKeyFile "D:\xampp\apache\conf\ssl\server.key"
</VirtualHost>

这是加了强制跳转的,http强制跳转到https。

第三,要把自签的ssl证书条件到chrome信任列表里,这个要用到chrome settings里的manage certificate这个选项,把server.pem添加到信任列表里,还要在证书目的里再勾选一个客户端验证什么的,总之,就不报错了。
至于chrome仍然显示not secure,那也没懒得管了,因为geolocation api可以成功调用了。

Microsoft Edge浏览器加了就好了没这么多幺蛾子。