在开发环境中,通常web服务是本地部署的,因此不需要考虑网页加密问题,只需要配置http协议即可。然而,在某些项目中,如调试第三方回调功能时,必须使用https回调地址,因此需要在本地配置https。
由于ssl证书是自己颁发的,因此浏览器会显示证书不受信任的警告。不过,可以在本地设置信任证书,从而忽略浏览器的警告,实现https访问。
1. openssl 生成证书
➜ conf.d git:(production) ✗ mkdir ssl
➜ ssl git:(production) ✗ cd ssl
➜ ssl git:(production) ✗ openssl genrsa -out server.key 1024
➜ ssl git:(production) ✗ openssl req -new -key server.key -out server.csr
➜ ssl git:(production) ✗ cp server.key server.key.org
➜ ssl git:(production) ✗ openssl rsa -in server.key.org -out server.key
➜ ssl git:(production) ✗ openssl x509 -req -in server.csr -out server.crt -signkey server.key -days 3650
➜ ssl git:(production) ✗ ll
total 32
-rw-r--r-- 1 55haitao staff 753B Sep 2 15:04 server.crt
-rw-r--r-- 1 55haitao staff 603B Sep 2 15:03 server.csr
-rw-r--r-- 1 55haitao staff 887B Sep 2 15:04 server.key
-rw-r--r-- 1 55haitao staff 887B Sep 2 15:04 server.key.org
2. Nginx配置
server {
listen 443 ssl;
server_name genes.dev.com;
ssl_certificate /etc/nginx/conf.d/ssl/server.crt;
ssl_certificate_key /etc/nginx/conf.d/ssl/server.key;
root /var/www/ogenes/Genes-Admin/public;
index index.html index.php;
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php?s=$1 last;
break;
}
include /etc/nginx/conf.d/fpm/php81-fpm;
}
server {
listen [::]:80;
listen 80;
server_name genes.dev.com;
# redirect http to https www
return 301 https://genes.dev.com$request_uri;
}
3. 重启Nginx, 然后访问
发现证书无效。
4. 信任证书
用safari浏览器打开, 查看此证书, 拖动证书到桌面, 双击打开。
添加到钥匙串,然后在钥匙串找到证书, 选择 始终信任。
5. 测试
在 Safari
在 Chrome
点击继续前往即可