前言
也可以说是为了折腾,还有一些功能上需要的原因,需求实现网站HTTPS访问。现在将具体实现的过程整理如下,以便于回顾和学习!如有不完善或者缺陷的地方,请指正。
一、目前我的站点的大致架构
公网服务器(Nginx+FRP+静态页面等) <------穿透公网------> 家庭群晖服务器(在群晖上部署Typecho,图床等服务)
二、申请免费证书
- 到各大运营商申请免费证书,本文以腾讯为例。申请地址:cloud.tencent.com
- 申请完成,后提交资料,通过审核后如下:
- 下载证书,解压证书
二、将证书上传至公网服务器(用于Nginx使用)
将证书上传至服务器目录/etc/ssl/nginx(如果目录不存在,请新建立一个)
[root@VM-0-2-centos nginx]# pwd
/etc/ssl/nginx
[root@VM-0-2-centos nginx]# ll
total 12
-rw-r--r-- 1 root root 3765 Jan 23 21:58 1_collick.xyz_bundle.crt
-rw-r--r-- 1 root root 1704 Jan 23 21:58 2_collick.xyz.key
-rw-r--r-- 1 root root 1002 Jan 23 21:58 collick.xyz.csr
三、将证书上传至群晖服务器(用于FRP客户端使用)
关于如何上传文件至群晖的指定目录,请参阅FRP安装配置的FRP客户端在群晖上的安装过程。
-
将获取到的证书解压后,将Nginx目录中证书上传至群晖目录
-
使用远程工具CRT、Putty登陆群晖后台,将证书拷贝至FRP客户端目录
root@Mydsm:/volume1/Share/FRP# pwd /volume1/Share/FRP root@Mydsm:/volume1/Share/FRP# root@Mydsm:/volume1/Share/FRP# root@Mydsm:/volume1/Share/FRP# ll total 16756 d---------+ 1 admin users 244 Jan 24 18:15 . d---------+ 1 root root 210 Jan 24 10:14 .. ----------+ 1 admin users 3765 Jan 24 18:12 1_collick.xyz_bundle.crt ----------+ 1 admin users 1704 Jan 24 18:12 2_collick.xyz.key ----------+ 1 admin users 19489 Jan 24 18:12 collick.xyz.zip ----------+ 1 admin users 8571275 Dec 19 13:26 frp_0.34.3_linux_amd64.tar.gz ----------+ 1 admin users 8556141 Dec 21 20:59 frp_0.34.3_windows_amd64.zip d---------+ 1 admin users 24 Dec 19 23:02 frpclient root@Mydsm:/volume1/Share/FRP# cp ./1_collick.xyz_bundle.crt 2_collick.xyz.key /frp/ root@Mydsm:/volume1/Share/FRP# root@Mydsm:/volume1/Share/FRP# root@Mydsm:/volume1/Share/FRP# cd /frp/ root@Mydsm:/frp# ll total 9692 drwxr-xr-x 2 root root 4096 Jan 24 18:18 . drwxr-xr-x 23 root root 4096 Jan 6 20:24 .. ---------- 1 root root 3765 Jan 24 20:51 1_collick.xyz_bundle.crt ---------- 1 root root 1704 Jan 24 20:51 2_collick.xyz.key -rwxr-xr-x 1 root root 9887744 Dec 19 23:03 frpc -rwxr-xr-x 1 root root 562 Jan 24 18:17 frpc.ini -rwxr-xr-x 1 root root 271 Jan 24 16:28 frpc.ini.bak -rw-rw---- 1 root root 1964 Jan 24 17:46 frpc.log -rwxr-xr-x 1 root root 53 Jan 22 20:57 frpc.sh -rw------- 1 root root 2014 Jan 1 22:42 nohup.out
三、修改Nginx的配置文件
-
我的Nginx的配置文件在/nginx/conf目录下
[root@VM-0-2-centos conf]# pwd /nginx/conf [root@VM-0-2-centos conf]# ll total 40 -rw-r--r-- 1 1001 1001 1077 Dec 15 22:41 fastcgi.conf -rw-r--r-- 1 1001 1001 1007 Dec 15 22:41 fastcgi_params -rw-r--r-- 1 1001 1001 2837 Dec 15 22:41 koi-utf -rw-r--r-- 1 1001 1001 2223 Dec 15 22:41 koi-win -rw-r--r-- 1 1001 1001 5231 Dec 15 22:41 mime.types -rwxr-xr-x 1 root root 691 Dec 23 22:06 nginx.conf -rw-r--r-- 1 1001 1001 636 Dec 15 22:41 scgi_params -rw-r--r-- 1 1001 1001 664 Dec 15 22:41 uwsgi_params -rw-r--r-- 1 1001 1001 3610 Dec 15 22:41 win-utf [root@VM-0-2-centos conf]#
-
或者通过以下命令查询生效的配置文件位置
[root@VM-0-2-centos objs]# ./nginx -t nginx: the configuration file /nginx/conf/nginx.conf syntax is ok nginx: configuration file /nginx/conf/nginx.conf test is successful
-
修改配置文件(请根据需求修改)
[root@VM-0-2-centos conf]# cat nginx.conf worker_processes 1; events { worker_connections 1024; } http { server { #listen 80; listen 443 ssl; server_name www.collick.xyz; #从腾讯云获取到的第一个文件的全路径 ssl_certificate /etc/ssl/nginx/1_collick.xyz_bundle.crt; #从腾讯云获取到的第二个文件的全路径 ssl_certificate_key /etc/ssl/nginx/2_collick.xyz.key; ssl_session_timeout 5m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; ssl_prefer_server_ciphers on; location / { proxy_pass http://127.0.0.1:8080; #8080端口位FRP服务的服务端口 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-NginX-Proxy true; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_max_temp_file_size 0; proxy_redirect off; proxy_read_timeout 240s; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /nginx/html; } } server{ listen 80; server_name www.collick.xyz; rewrite ^/(.*)$ https://www.collick.cn:443/$1 permanent; } }
-
修改完成后重新加载配置文件
[root@VM-0-2-centos sbin]# pwd /nginx/sbin [root@VM-0-2-centos sbin]# [root@VM-0-2-centos sbin]# [root@VM-0-2-centos sbin]# ./nginx -s reload #使用命令重新加载配置文件
四、FRPS服务端的安装配置
请参阅FRP安装配置
五、FRPC客户端配置证书
登陆群晖后台,进入frp目录(详情参阅FRP安装配置)
配置文件如下(重新启动一次客户端服务):
root@Mydsm:/frp#
root@Mydsm:/frp# cat frpc.ini
[common]
server_addr = collick.xyz server_port = 7000 #你的FRPS服务器设定的密码 token = www.collick.xyz
[www_htts2http]
type = https custom_domains = www plugin = https2http plugin_local_addr = 127.0.0.1:80 # HTTPS 证书相关的配置 plugin_crt_path = ./1_collick.xyz_bundle.crt plugin_key_path = ./2_collick.xyz.key plugin_host_header_rewrite = 127.0.0.1 plugin_header_X-From-Where = frp
六、群晖服务器证书新增
- 将申请的Apache证书导入至群晖
私钥:选择您之前保存在计算机中的 server.key 文件
证书:选择您从认证机构收到的签发证书。文件名应类似于 yourdomainname.crt。
中间证书:此为可选填项目。如果认证机构提供了中间凭证,请在此导入。
- 配置导入的证书
以下红框部分,来自群晖web station的虚拟主机配置(后期会补充一个群晖安装typecho的文档)
七、Typecho配置部分
-
登陆后台设置-基本设置,将站点地址修改成https
-
下载插件TEDUriReplace
下载地址:点击跳转
此插件的功能主要用于前期使用http时产生的页面的部分地址会延续使用http开头的链接地址,当时用浏览器访问时,浏览器会报以下错误: -
开启HTTPS
编辑站点根目录下的config.inc.php文件,添加下面的配置:/** 开启HTTPS */ define('__TYPECHO_SECURE__',true);
感谢分享呀
很详细的教程
这真是个好文章,谢谢
谢谢楼主,赞
mark一下。