商用和家用服务器架设对比(含https使用)

准备:一台有公网IP的路由器、一台内网服务器(这里为群晖NAS上的Tomcat服务器)

流程:请求先到达路由器,然后通过端口转发到内网群晖NAS上的Tomcat服务器

1.部署网站服务

商用:购买域名(提供域名解析)、云主机

家用:在路由器上设置虚拟服务器,通过端口转发到内网服务器对应端口。(例:将外网9000端口转发到内网192.168.1.100服务器的8080端口)

2.访问网站服务

商用:域名已解析到云主机IP,直接通过域名访问(例:http://abc.com,通过默认80端口访问)

家用:因为公网IP(家用一般都是内网IP,向电信要公网IP)经常变动,所以使用动态DNS(动态域名绑定,DDNS)申请免费域名绑定IP,就可以使用域名+端口访问内网服务器了(例:http://abc.com:8080,家用默认80端口被封只能使用其他端口)。

商用和家用服务器架设对比(含https使用)插图

到这里已经设置完了,如果你还想使用https访问请往下看(http默认80端口是封掉的;https默认443端口未封掉)。

a.申请ssl证书

腾讯云域名验证指引:https://cloud.tencent.com/document/product/400/4142

腾讯云、阿里云等有免费SSL证书和付费SSL证书申请。申请证书时需要域名验证,有如下两种:

①手动DNS验证(商用:在域名提供方添加相应的DNS解析记录;家用:使用的是DDNS,不提供解析,无法验证)

②文件验证(商用:指定目录创建文件,然后访问文件;家用:80端口被封,无法验证)

商用和家用服务器架设对比(含https使用)插图1

以上两种方式家用都行不通,但是群晖NAS提供从Let's Encrypt申请证书(90天免费,到期免费续约),于是用群晖NAS的DDNS提供的免费域名申请证书(如果条件都不满足就只有购买域名,然后按①操作了)。

b.安装ssl证书(以下示例为Tomcat证书部署)

腾讯云证书安装指引(Apache 2.x证书部署、Nginx证书部署、IIS证书部署、Tomcat证书部署):

https://cloud.tencent.com/document/product/400/4143

b1.获取证书

如果申请证书时有填写私钥密码,下载可获得Tomcat文件夹,其中有密钥库 www.domain.com.jks;

如果没有填写私钥密码,证书下载包的Tomcat文件夹中包括密钥库文件www.domain.com.jks 与密钥库密码文件keystorePass.txt

当用户选择粘贴CSR时,不提供Tomcat证书文件的下载,需要用户手动转换格式生成,操作方法如下:

可以通过 Nginx 文件夹内证书文件和私钥文件生成jks格式证书

转换工具:

https://www.trustasia.com/tools/cert-converter.htm

使用工具时注意填写 密钥库密码 ,安装证书时配置文件中需要填写。

b2.证书安装

配置SSL连接器,将www.domain.com.jks文件存放到conf目录下,然后配置同目录下的server.xml文件:

<Connector port="443" protocol="HTTP/1.1" SSLEnabled="true" maxThreads="150" scheme="https" secure="true" keystoreFile="conf/www.domain.com.jks" keystorePass="changeit" clientAuth="false" sslProtocol="TLS" />

注:

配置文件参数 说明
clientAuth 如果设为true,表示Tomcat要求所有的SSL客户出示安全证书,对SSL客户进行身份验证
keystoreFile 指定keystore文件的存放位置,可以指定绝对路径,也可以指定相对于 (Tomcat安装目录)环境变量的相对路径。如果此项没有设定,默认情况下,Tomcat将从当前操作系统用户的用户目录下读取名为 “.keystore”的文件。
keystorePass 密钥库密码,指定keystore的密码。(如果申请证书时有填写私钥密码,密钥库密码即私钥密码,否则填写密钥库密码文件中的密码)
sslProtocol 指定套接字(Socket)使用的加密/解密协议,默认值为TLS
b3.http自动跳转https的安全配置

到conf目录下的web.xml。在</welcome-file-list>后面,</web-app>,也就是倒数第二段里,加上这样一段

<login-config> <!-- Authorization setting for SSL --> <auth-method>CLIENT-CERT</auth-method> <realm-name>Client Cert Users-only Area</realm-name> </login-config> <security-constraint> <!-- Authorization setting for SSL --> <web-resource-collection> <web-resource-name>SSL</web-resource-name> <url-pattern>/*</url-pattern> </web-resource-collection> <user-data-constraint> <transport-guarantee>CONFIDENTIAL</transport-guarantee> </user-data-constraint> </security-constraint>

这步目的是让非ssl的connector跳转到ssl的connector去。所以还需要前往server.xml进行配置:

<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="443" />

redirectPort改成ssl的connector的端口443,重启后便会生效。

c.访问网站服务

商用:http://域名访问(会自动跳转到https访问) 或 https://域名访问

家用:在路由器设置虚拟服务器,将443端口(https默认443端口)转发到内网服务器对应端口。(例:https://abc.com;80端口被封,http访问无法跳转到https,只能使用https访问)

原文链接:https://blog.csdn.net/l568646976/article/details/80415983?ops_request_misc=&request_id=7b36c50e0b7d411c96a603116b172418&biz_id=&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~koosearch~default-23-80415983-null-null.268%5Ev1%5Econtrol&utm_term=%E9%BB%91%E7%BE%A4%E6%99%96%E3%80%81docker%E3%80%81%E5%AE%B9%E5%99%A8%E9%95%9C%E5%83%8F%E3%80%81%E5%9F%9F%E5%90%8D%E6%B3%A8%E5%86%8C%E3%80%81%E5%AE%9D%E5%A1%94%E3%80%81%E5%8F%8D%E5%90%91%E4%BB%A3%E7%90%86%E3%80%81nginx%E3%80%81frp%E3%80%81%E5%8A%A8%E6%80%81%E5%9F%9F%E5%90%8D%E8%A7%A3%E6%9E%90%E3%80%81NAS%E3%80%81%E7%BE%A4%E6%99%96%E3%80%81%E9%98%BF%E9%87%8C%E4%BA%91%E3%80%81%E5%9F%9F%E5%90%8D%E8%A7%A3%E6%9E%90%E3%80%81%E5%86%85%E7%BD%91%E7%A9%BF%E9%80%8F%E3%80%81ipv6%E3%80%81ddns%E3%80%81%E8%BD%BB%E9%87%8F%E7%BA%A7%E4%BA%91%E6%9C%8D%E5%8A%A1%E5%99%A8%E3%80%81%E9%93%81%E5%A8%81%E9%A9%AC%E3%80%81%E5%A8%81%E8%81%94%E9%80%9A%E3%80%81DSM%E3%80%81DSM6.0%E3%80%81%E7%BE%A4%E6%99%96nas%E3%80%81%E4%BA%91%E6%9C%8D%E5%8A%A1%E5%99%A8%E3%80%81%E8%9C%97%E7%89%9B%E6%98%9F%E9%99%85

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享