其实本来不想写这个的,但是昨天域名备案过了后,配置https搞了我整整半天,属实是搞急了,csdn上面坑人的教程可真是多,走了很多的弯路,趁着现在还记得,就记录一下吧,后面说不定也会用到的,这篇写完就要准备去复习了,感觉离被卷死真的就一步之遥了……
二.方法2.1 Tomcat的方法
不推荐使用这种方法,因为需要修改工程代码和配置。我在最开始配nginx转发失败时,也尝试了一下这种方法,方法是ok的,但便利程度远不及nginx,所以为什么不用nginx转发呢?不过说不定以后还会用到这种方式,所以也记录一下吧
1. 申请证书,域名购买的地方一般可以免费申请,我是在阿里云申请的,参考:阿里云域名购买,购买免费的DV单域名证书就可以了,有效期一年,到期可以继续申请的
2. 下载证书的Tomcat版本,将其中的pfx文件拷贝到项目的resource目录下
3. 配置application.yaml文件
server: ssl: enabled: true key-store-password: pfx-password.txt中的密码 key-store-type: PKCS12 key-store: classpath:你的.pfx文件名
4 在SpringBoot启动项下添加相关配置
@Bean public ServletWebServerFactory servletContainer() { TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory() { @Override protected void postProcessContext(Context context) { SecurityConstraint securityConstraint = new SecurityConstraint(); securityConstraint.setUserConstraint("CONFIDENTIAL"); SecurityCollection collection = new SecurityCollection(); collection.addPattern("/*"); securityConstraint.addCollection(collection); context.addConstraint(securityConstraint); } }; tomcat.addAdditionalTomcatConnectors(httpConnector()); return tomcat; } @Bean public Connector httpConnector() { Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol"); connector.setScheme("http"); //Connector监听的http的端口号 connector.setPort(8080); connector.setSecure(false); //监听到http的端口号后转向到的https的端口号 connector.setRedirectPort(443); return connector; }
5. 在你的服务器尝试运行一下你的项目,因为你可能会碰到很多的端口冲突情况,老老实实用lsof -i:端口号去杀冲突的进程吧.
6. 去你的域名解析那儿配置域名解析,我用的阿里云,可以参考阿里云域名解析向导
7. 最后,重新运行项目即可,不过还是不太推荐这种方式,不方便,且会出现很多很多莫名其妙的问题,所以还是用nginx吧
2.2 Nginx转发推荐的方法!只要你别跟着csdn上面那些坑爹的教程做就好了
1. 申请证书,域名购买的地方一般可以免费申请,我是在阿里云申请的: 阿里云域名购买,购买免费的DV单域名证书就可以了,有效期一年,到期可以继续申请的
2. 下载证书的nginx版本,其中包含key和pem两个文件
3. 检查你nginx有没有安装ssl模组,nginx/sbin目录下(你可能看不见sbin这个目录,但并没有问题,可以直接带着路径执行指令),指令nginx -V(带目录指令 /usr/local/nginx/sbin/nginx-V 前面改成你的目录)
如果显示configure arguments: --with-http_ssl_module代表正确安装了,请跳到步骤5,否则需要重新安装模块
4. 进入你nginx的目录,就是压缩包解压的目录下,使用指令./configure --with-http_ssl_module,如果您nginx没有其他的设置,建议直接执行make install重新安装,这样会覆盖原来的版本,可以确保安装没有问题,否则执行make(我没试过……不过csdn上说这样可以,要不你们试试?),安装完按照步骤三检查一下,确保没有问题
5. 将你的pem和key文件拷贝到nginx配置文件的目录下
6. 将相关端口添加到阿里云网络安全组中,阿里云请参考阿里云端口配置,并开启防火墙限制(443,80,你项目的端口)
#基于Centor OS 7的防火墙配置过程 1. 防火墙状态设置 firewall-cmd --state #查看防火墙状态,为了安全性,建议开启开启防火墙 systemctl start firewalld.service #开启防火墙 systemctl enable firewalld.service #设置防火墙开机自启动,建议设置一下 systemctl is-enabled firewalld.service;echo $? #查看是否设置成功,显示enabled和0,代表设置成功 2.开启端口 firewall-cmd --zone=public --add-port=端口号/tcp --permanent #--permanent永久生效,没有此参数重启后失效 firewall-cmd --zone=public --add-port=1000-2000/tcp --permanent #批量添加1000-2000 firewall-cmd --reload #重新载入防火墙 firewall-cmd --list-ports #查看端口开放情况,其中须包括443,80,项目端口
7. 配置nginx配置文件,如果您不确定使用了哪个配置文件,使用指令ps -ef | grep nginx查看,最后会显示当前配置文件路径的,配置文件修改步骤如下
1.注释掉默认配置,整段需全部注释掉 server{ listen 80; …… …… } 2.添加https端口监听 server { listen 443 ssl; server_name 你的域名; ssl_certificate 你的pem文件地址; ssl_certificate_key 你的key文件地址; #地址可以使用对于本配置文件的相对路径,例如如果你的文件和conf同级目录下,则可以直接写文件名 #最好使用绝对路径 ssl_session_cache shared:SSL:1m; ssl_session_timeout 5m; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; location / { proxy_pass http://你服务器的ip:你项目的端口; root html; index index.html index.htm; } } 3.添加80端口监听和强制转化 server { listen 80; #域名访问会默认映射到80端口 server_name 你的域名; location / { proxy_pass http://你服务器的ip:你项目的端口; index index.html index.htm; proxy_set_header Host $host; proxy_set_header X-Real-Ip $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; } rewrite ^(.*)$ https://你的域名:443/ permanent; }
8. 重新启动nginx,使用指令nginx -s reload即可(带目录执行/usr/local/nginx/sbin/nginx -s reload 前面改成你的目录)
9.域名解析,配置两条A记录www和@,记录值填你的ip即可,TTL无需修改
三.其他如果您将网站升级了https,请注意网站内所有http链接都会失效
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)