域名+服务器+Nginx+宝塔使用SSL证书设置HTTPS

诗林  金牌会员 | 2024-12-2 07:47:28 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 585|帖子 585|积分 1755

前言

在我的前面文章里,有写过一篇文章
linux服务器+宝塔重新部署别人可访问的网站
在这篇文章,有教学怎么使用宝塔和买的服务器的公网IP,以及教怎么打包vue和springboot去部署不用域名的网站让别人访问
那么,这篇文章将在这个基础上来教各人怎么去搭建通过域名访问的网站
项目展示

在我的项目中,我已经乐成的搭建出了https的网站
HTTPS谈天室网站
点开之后正常的访问到我们的项目

以及可以或许乐成的调用后端


   这个项目在很长时间内我都会挂载部署,我买的阿里云的域名和服务器,我可以通过电脑端正常的访问该链接,但是手机端不行,问了阿里的客服说是由于网站没有【存案】导致
  预备工作

为了可以正常的搭建出可以访问域名的https协议的网站,我们在正式开始前须要做一些预备工作
服务器

   要部署域名的当然须要服务器,可以根据本身须要进行购买即可
  域名

首先你须要买一个域名,由于我的服务器和域名都是在阿里云买的,因此用阿里云进行演示
首先根据本身须要申请一个域名

   购买完之后,须要实名认证,点击【信息模板】进行登记信息
  


   按照本身实际信息填写提交即可
  等待认证乐成

   将你的【信息模板】关联到你的域名即可
  域名解析


   选择你的域名,右边有一个解析按钮,点击之后默认会有一个_dnsauth的解析,这个不用动
  

   然后我们新增一个泛解析
  以我申请的域名springsso.top为例,泛解析的意思是你可以添加恣意前缀解析到你的域名,如
   chat.springsso.top
student.springsso.top
hotel.springsso.top

  

   泛解析
记录范例: A
主机记录: *
记录值: 你服务器的公网IP
TTL:默认10
    添加一个公网IP解析
  

   记录范例: @
主机记录: *
记录值: 你服务器的公网IP
TTL:默认10
  DNS拨测

   同样是这个界面,有一个生效检测
点击可以跳转到DNS拨测中心验证你的域名解析有没有生效
  


   当你能看到你的域名可以解析到你的公网IP值,即代表你的域名解析乐成!悬停在解析结果IP可以检察解析的IP
  SSL

   初期我们可以申请免费的SSL证书,搜刮数字证书管理服务
  

找到【SSL证书管理】下的【个人测试证书(原免费证书)】,点击创建证书

   输入你的域名,然后点击确认,一样平常证书创建下发的话,慢的情况下只须要十多分钟
如果你隔了很久没有生效,请在右边解析一下(刚刚开始须要解析到本身的域名)
  当生效之后,我们点击更多,找到【下载】

   我们须要获取到两个证书
Nginx: 用于Nginx部署使用
JKS: 用于后端springboot开启HTTPS使用
  安全组和端口

   安全组是有须要注意的事项的,我在这一步卡了很久,安全组须要和我们的服务器实例进行地区的关联,如我的实例是:
  

   他的地区是华南2(河源)
  但是在我没有创建任何安全组的情况下,不知道为什么自动给我创建了3个安全组

   你只有设置开放了对应地区的安全组的收支站端口,才能生效
    针对端口,我们须要开放这么几个端口
❤️你须要部署的后端的端口
❤️开放8080以部署tomcat
❤️开放80端口
❤️开放443端口
❤️如果你用的是宝塔进行部署,宝塔的【安全】的【体系防火墙】也须要开放对应端口
  宝塔

   怎么按照宝塔不须要多言,可以参考我最上面的文章链接,也可以百度
  nginx

   登录到宝塔之后,点击【软件商店】,检索nginx进行下载
  

tomcat

   同样在【软件商店】下载tomcat
  

SpringBoot项目设置

打包方式我们同样可以参考我的上篇文章,或者参考百度即可
   然后我们须要拿到下载的JKS的证书,放到你项目标resources文件夹下
  

   然后在application.yml新增设置如下:
  1. server:
  2.   port: 8082 #端口
  3.   servlet:
  4.     context-path: /chatEnd # 项目主路由
  5.   ssl: #ssl配置
  6.     enabled: true  # true为开启https
  7.     #key-alias: alias-key # 别名(可以不进行配置)
  8.     # 保存SSL证书的秘钥库的路径
  9.     key-store: classpath:www.springsso.top.jks # ssl证书位置,如果放在resources文件夹下就是这样配置
  10.     key-password: 私钥密码
  11.     #key-store-password: 证书密码
  12.     key-store-type: JKS    # 证书类型,选择JKS
复制代码
  上述设置中
key-password是私钥密码
key-store-password 是证书密码。
如果这两个密码相同的只设置一个即可,由于tomcat默认先用keyStore的pass去解私钥。
(PS:如果你使用阿里云上的免费SSL证书,下载jks格式的证书的时间,只有一个密码,是证书的密码)
  我的项目中证书设置如下(密码看到无所谓,每次证书下载密码会随机):

   然后打包成jar包,上传到服务器,恣意位置,记住路径即可
找到【网站】的【java项目】,【添加Java项目】
  


   jar路径即你打包之后的项目文件路径,项目JDK根据本身实际项目进行调解,其他默认即可
  这个时间你的项目运行是https的,只能用https进行调用接口
vue前端设置

   vue项目,须要映射到我们的域名,也就是我们全部涉及到ip的,全部要更换为域名
如我的axios的封装js
  1. import axios from 'axios'
  2. axios.defaults.headers['Content-Type'] = 'application/json;charset=utf-8'
  3. const service = axios.create({
  4.   baseURL: 'https://springsso.top/chatEnd',
  5.   timeout: 30000
  6. })
  7. service.interceptors.request.use(config => {
  8.   return config
  9. },
  10. error => {
  11.   return Promise.reject(error)
  12. }
  13. )
  14. service.interceptors.response.use(
  15.   res => {
  16.     return res
  17.   }
  18. );
  19. export default service
复制代码
  config下的index.js
  1. 'use strict'
  2. // Template version: 1.3.1
  3. // see http://vuejs-templates.github.io/webpack for documentation.
  4. const path = require('path')
  5. module.exports = {
  6.   dev: {
  7.     // Paths
  8.     assetsSubDirectory: 'static',
  9.     assetsPublicPath: '/',
  10.     proxyTable: {
  11.       '/': {
  12.         target: "https://springsso.top/chatEnd",
  13.         changeOrigin: true,
  14.         secure: false,
  15.         pathRewrite: {
  16.           '^/': ''
  17.         }
  18.       }
  19.     },
  20.     // Various Dev Server settings
  21.     host: 'localhost', // can be overwritten by process.env.HOST
  22.     port: 8080, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined
  23.     autoOpenBrowser: false,
  24.     errorOverlay: true,
  25.     notifyOnErrors: true,
  26.     poll: false, // https://webpack.js.org/configuration/dev-server/#devserver-watchoptions-
  27.     /**
  28.      * Source Maps
  29.      */
  30.     // https://webpack.js.org/configuration/devtool/#development
  31.     devtool: 'cheap-module-eval-source-map',
  32.     // If you have problems debugging vue-files in devtools,
  33.     // set this to false - it *may* help
  34.     // https://vue-loader.vuejs.org/en/options.html#cachebusting
  35.     cacheBusting: true,
  36.     cssSourceMap: true
  37.   },
  38.   build: {
  39.     // Template for index.html
  40.     index: path.resolve(__dirname, '../dist/index.html'),
  41.     // Paths
  42.     assetsRoot: path.resolve(__dirname, '../dist'),
  43.     assetsSubDirectory: 'static',
  44.     assetsPublicPath: './',
  45.     /**
  46.      * Source Maps
  47.      */
  48.     productionSourceMap: true,
  49.     // https://webpack.js.org/configuration/devtool/#production
  50.     devtool: '#source-map',
  51.     // Gzip off by default as many popular static hosts such as
  52.     // Surge or Netlify already gzip all static assets for you.
  53.     // Before setting to `true`, make sure to:
  54.     // npm install --save-dev compression-webpack-plugin
  55.     productionGzip: false,
  56.     productionGzipExtensions: ['js', 'css'],
  57.     // Run the build command with an extra argument to
  58.     // View the bundle analyzer report after build finishes:
  59.     // `npm run build --report`
  60.     // Set to `true` or `false` to always turn it on or off
  61.     bundleAnalyzerReport: process.env.npm_config_report
  62.   }
  63. }
复制代码
  然后执行npm run build打包,放置到你tomcat的webapps文件夹下
通过【软件商店】的【已安装】,可以找到tomcat安装位置,其他软件同理
  


   我这里创建了一个chat文件夹,里面放了前端打包文件,这个时间你已经可以通过tomcat访问到本身的前端项目了,链接为公网ip:8080/chat,但是前后端无法联通
  数据库

   找到【数据库】,根据本身实际的项目创建对应的数据库
  

我以MySQL为例,点击【添加数据库】

   根据本身实际项目填写数据库名和用户名密码
保存之后,在【权限】修改数据库为全部人,这样你也可以本身的电脑用sql工具连接你的数据库编辑建表等
  

nginx设置

   将下载的nginx版本的SSL证书上传到你的服务器,可以恣意位置,记住位置即可
同样在【软件商店】的【已安装】,定位到已经按照的nginx的位置,找到conf文件夹下的nginx.conf文件
我们须要在里面新增server设置
在http{}的结构下新增如下设置
  1.     server {
  2.         listen       443 ssl;
  3.         server_name  springsso.top;
  4.         root /home/data;
  5.         ssl_certificate      /www/server/nginx/conf/www.springsso.top.pem;# nginx版本的ssl证书位置,根据实际调整
  6.         ssl_certificate_key  /www/server/nginx/conf/www.springsso.top.key;# nginx版本的ssl证书位置,根据实际调整
  7.         ssl_session_cache    shared:SSL:1m;
  8.         ssl_session_timeout  5m;
  9.         ssl_ciphers  HIGH:!aNULL:!MD5;
  10.         ssl_prefer_server_ciphers  on;
  11.         location / {
  12.             root   html;
  13.             index  index.html index.htm;
  14.         }
  15.         location /chat/  {
  16.             index index.html;
  17.             #需要反代的采集服务,具体的服务器配置在nodes对应的ip服务器中,实际公网IP根据自己项目调整
  18.             proxy_pass http://公网ip:8080/chat/;
  19.             proxy_set_header X-Real-IP     $remote_addr;
  20.             proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  21.             client_max_body_size     4g;
  22.             client_body_buffer_size  256k;
  23.         }
  24.     location /chatEnd/ {
  25.         proxy_pass https://公网ip:8082/chatEnd/;
  26.         proxy_set_header X-Real-IP $remote_addr;
  27.         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  28.         proxy_set_header Host $host;
  29.         proxy_set_header X-Forwarded-Proto $scheme;
  30.         proxy_set_header X-NginX-Proxy true;
  31.         proxy_ssl_session_reuse off;
  32.         proxy_redirect off;
  33.         client_max_body_size     4g;
  34.         client_body_buffer_size  256k;
  35.         # WebSocket 相关配置,如果你的项目有webSocket,需要新增这个
  36.         proxy_http_version 1.1;
  37.         proxy_set_header Upgrade $http_upgrade;
  38.         proxy_set_header Connection "upgrade";
  39.     }
  40.     }
复制代码
  该设置实际是利用了反向署理,将在访问域名反向署理访问到启动在tomcat的项目
然后找到【软件商店】的安装的nginx进行重启,你就可以用域名访问到项目了
以我的为例,我可以用https://springsso.top/chat访问到项目
  如果你须要使用泛解析,可以使用如下设置:
  1.         server {
  2.         listen       443 ssl http2;
  3.         server_name  chat.springsso.top;
  4.         root /home/data;
  5.         ssl_certificate      /www/server/nginx/conf/www.springsso.top.pem;
  6.         ssl_certificate_key  /www/server/nginx/conf/www.springsso.top.key;
  7.         ssl_session_cache    shared:SSL:1m;
  8.         ssl_session_timeout  5m;
  9.         ssl_ciphers  HIGH:!aNULL:!MD5;
  10.         ssl_prefer_server_ciphers  on;
  11.         ssl_protocols TLSv1.2 TLSv1.3;
  12.         location / {
  13.             proxy_pass http://47.120.3.49:8080/chat/;
  14.             proxy_set_header X-Real-IP $remote_addr;
  15.             proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  16.             client_max_body_size     4g;
  17.             client_body_buffer_size  256k;
  18.         }
  19.     }
复制代码
  那么这个设置你可以使用域名:
https://chat.springsso.top进行访问项目,须要注意的是,如果须要使用泛解析,那么你的SSL证书须要设置解析的域名有泛解析的域名,
例:*.springsso.top
  结语

以上就是设置域名访问和https可信证书的教程,有遗漏会更新

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

诗林

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表