将来的你
一定会感谢现在拼命努力的自己

Linux+Nginx/Apache/Tomcat新增SSL证书,开启https访问教程

上上篇文章《nginx 平滑升级&新增模块》提到了公司的 https 访问需求。当我新增了 SSL 模块之后,却发现以前还真没部署过 https 访问。

下面整理我的部署过程,并收集了一下 Apache 和 Tomcat 这 2 种 Linux 下常用的 WEB 软件配置 SSL 的简单简单步骤,以便回头翻阅。

一、下载证书

成功申请 SSL 证书之后,就可以下载到配置 SSL 的证书了!一般情况下,都可以选择下载相应 WEB 服务器的不同证书,或者直接打包下载主流 WEB 服务器的证书,如图所示:

Linux+Nginx/Apache/Tomcat新增SSL证书,开启https访问教程

下载后,就可以根据不同的 WEB 服务器来选择相应的证书了。

二、Nginx

先确认 nginx 安装时已编译 http_ssl 模块,也就是执行如下命令查看是否存在--with-http_ssl_module 参数:

如果没有这个参数,说明没有编译 SSL 模块,那么请参考上上篇文章自行解决,此处就不赘述了。

①、准备证书

Nginx 需要用到 2 个证书文件:

I.  证书公钥 (crt 格式)

II. 证书私钥(key 格式)

Linux+Nginx/Apache/Tomcat新增SSL证书,开启https访问教程

拿到证书后,将其上传到 nginx 下的 ssl 目录(也可自定义位置)。

②、修改配置

A. http 和 https 全局共存

在原 server 模块新增监听 443 端口,然后新增如下代码(具体看注释)。

保存配置之后,先执行如下命令测试配置是否正确:

确认无误之后,执行如下命令重载 nginx,让配置生效:

如无错误,现在应该可以顺利访问 https://yourdomain.com/了!值得说明的是,这样配置后,http 和 https 是全局共存的,你能 http 访问到的页面,https 也可以访问得到。

B. 全局强制 https

如果是全局 https 访问,那么额外写一个监听 80 的 server,让 http 访问跳转到 https 上即可,下面是参考模板:

C. 部分强制 https,部分强制 http

可能有部分强迫症会有这样的需求:我只要部分页面强制 https 访问,比如后台及登陆页面,其他常规页面强制 http 访问,我该如何设置?

思路:和 B 方案一样,分别 2 个 server 模块,并新增判断规则,指定部分页面 http 访问,部分页面 https 访问。

具体可以参考一下三叶运维的配置主要修改中文注释部分,其他配置保持不变):

二、Apache

同样,先确认 Apache 安装时已添加 SSL 支持模块。如果没有请自行搜索搞定,本文不再赘述。

①、准备证书

Apache 需要用到三个证书文件:

I. 根证书:root_bundle.crt

II. 证书公钥:yourdomain.com.crt

III. 证书私钥:yourdomain.com.key

Linux+Nginx/Apache/Tomcat新增SSL证书,开启https访问教程

将下载好的三个证书文件,上传到 apache 下的 ssl 目录中(可自定义位置)。

②、修改配置

I. 编辑 httpd.conf 文件,取消以下内容的#注释符号:

II. 编辑 http-ssl.conf 文件,如下修改:

III. 保存退出,并重启 Apache 即可。

三、Tomcat

①、准备证书

Tomcat 只需要用到一个 jks 格式的证书文件,比如 yourdomain.com.jks。

Linux+Nginx/Apache/Tomcat新增SSL证书,开启https访问教程

拿到文件后,将其上传到 Tomcat 下的 conf 目录中。

②、修改配置

打开 conf 目录下的 server.xml 文件,找到以下内容:

去掉前后的注释,并如下修改(或者直接其后添加以下代码亦可):

退出并保存,最后重启 Tomcat 即可。

四、解决警告

如果网页中存在不带 https 的资源,比如 http 协议的 js、css 或图片,那么访问这个 https 页面,某些浏览器(比如 IE)就会发出警告,提示页面中存在不安全的内容,并且不会加载这些 http 协议的资源,导致页面错乱等问题:

Linux+Nginx/Apache/Tomcat新增SSL证书,开启https访问教程

解决办法:

方法①、使用相对地址

只要将这些 http 的资源链接,改为相对地址。比如原链接是<img src="http://yourdomain.com/images/demo.png" alt="Linux+Nginx/Apache/Tomcat新增SSL证书,开启https访问教程">那么改成<img src="/images/demo.png" alt="Linux+Nginx/Apache/Tomcat新增SSL证书,开启https访问教程">即可。

方法②、修改网站代码

如果是全局 https 访问,那么你将网站代码中的链接均改为 https 好了。如果是 http 和 https 混合的,那么准备 2 套网站文件也行。然后在 nginx 当中设置不同的 root 路径。

为了省事,我推荐方法①。

好了,本文就写到这,希望能解您的燃眉之急!

赞(0) 打赏
声明:本站发布的内容(图片、视频和文字)以原创、转载和分享网络内容为主,若涉及侵权请及时告知,将会在第一时间删除,联系邮箱:contact@3yyy.top。文章观点不代表本站立场。本站原创内容未经允许不得转载:三叶运维 » Linux+Nginx/Apache/Tomcat新增SSL证书,开启https访问教程
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

https://beian.miit.gov.cn/