Tomcat从安装到配置Https SSL证书
为什么要写本文?
今天一个群友在群里问怎么给Tomcat配置SSL,也就是HTTPS,他买的阿里云的服务器,自带公网ip,还找到了免费的SSL证书
既然@我了,我就帮忙搞一搞呗,我就要了一个带sudo的用户,开始了踩坑-查文档爬坑
踩到坑的原因还是因为自己对Linux的用户端口权限不够了解,所以记下来,告诫自己戒骄戒躁
安装Tomcat
演示用Centos 7,Tomcat版本8.5.50,需要先安装JDK,这里用的openjdk
下载Tomcat http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.50/bin/apache-tomcat-8.5.50.tar.gz
$ cd ~
$ wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.50/bin/apache-tomcat-8.5.50.tar.gz #下载到家目录
$ tar zxvf apache-tomcat-8.5.50.tar.gz #解压tomcat
$ cd apache-tomcat-8.5.50
$ bin/startup.sh #启动tomcat
$ tail -f logs/catalina.out #查看日志输出
你会发现Linux下tomcat启动特别慢,原因在于Tomcat获取随机数使用/dev/./random在不能产生新的随机数时会阻塞程序,参考Linux中的随机数文件 /dev/random /dev/urandom,知道问题在哪里我们修改一下bin/catalina.sh,使其使用非阻塞的/dev/urandom
$ vim bin/catalina.sh
在256行附近为JAVA_OPTS添加指定默认随机数-Djava.security.egd=file:/dev/./urandom,保存退出

重启tomcat
$ bin/shutdown.sh
$ bin/startup.sh
$ tail -f logs/catalina.out
这次启动就非常快了
访问<127.0.0.1:8080>或者localhost:8080查看是否正确启动
安装APR
查看启动日志的时候,你可能会发现有个库好像没有找到
The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path
APR用官网的说法是:Tomcat can use the [Apache Portable Runtime](https://apr.apache.org/) to provide superior scalability, performance, and better integration with native server technologies.
简单来说,APR是针对操作系统优化,大幅度提升服务器性能的运行时环境
最简单的解决办法是安装apr-devel,更多细节参考http://tomcat.apache.org/tomcat-8.5-doc/apr.html
$ sudo yum install -y apr-devel
更细致的安装是使用源码,通过rpmbuild打成rpm包进行安装,参考https://apr.apache.org/compiling_unix.html
修改Tomcat端口为80
http默认的端口是80,当我们只写ip或域名时会默认访问80端口,配置一下还挺有用的
$ vim conf/server.xml
在69行左右修改8080为80,保存退出

重启tomcat,命令与上边一致,不再赘述
如果你和我一样,使用的也是sudo用户,启动tomcat时没加sudo,那么此时你也要被坑了,“我访问127.0.0.1”怎么没反应啊?
这是因为Linux默认非root用户可直接使用的端口号要大于1024! 我今天就坑在这里好久,之前一直使用root用户一点事没有,这才发现这个问题,改安全组、关防火墙、改配置一把梭没查到问题,改到怀疑人生,使用sudo解决问题;不要盲目迷信root
配置Https SSL证书
首先从证书颁发机构网站下载证书文件和密码,证书文件后缀.pfx,密码一般是pfx-password.txt,有时使用pfx配置密码会失败,这里就使用转化pfx为jks文件
先复制.pfx证书与密码到当前目录,这里放在用户家目录中
转换pfx证书为jks
$ cd ~
$ cat pfx-password.txt #查看密码,这里可以复制一下,马上会用到
$ keytool -importkeystore -srckeystore 你的证书.pfx -destkeystore domains.jks -srcstoretype PKCS12 -deststoretype JKS #这里的domains.jks名称你可以改成别的,只要以.jks结尾就可以
输入3次密码,粘贴刚才复制的密码即可,ls你会发现domain.jks已经生成
配置Server.xml
$ cp domains.jks ~/apache-tomcat-8.5.50/conf
$ cd ~/apache-tomcat-8.5.50
$ vim conf/server.xml
在大约87行,修改原来的8443为443, protocol可以使用其它高版本协议,详情参考http://tomcat.apache.org/tomcat-8.5-doc/config/http.html#SSL_Support

如图,keystoreFile处填写jks的绝对路径,keystorePass填写证书密码(刚才生成jks时填写的与pfx相同的密码)
<!-- 开启ssl支持,请注意其它接口转发应修改redirectPort为443 -->
<Connector port="443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
keystoreFile="/你的目录/apache-tomcat-8.5.50/conf/domains.jks"
keystorePass="证书密码"
clientAuth="false" sslProtocol="TLS"
connectionTimeout="20000" />
修改默认配置的8443为443,使其它端口转发到443端口拥有加密功能
在vim中输入,一般应该成功替换6处(含注释)
:1,$s/8443/443/g
保存退出,重启Tomcat
后续
一般来说看到这里,你的Tomcat应该已经绑上Https证书了
由于这是一次踩坑的记录,再提几嘴可能碰到的问题:
- ECS服务器由安全组配置入站出站规则,默认入站全禁,出站全开,要注意配置80与443端口入站放行
- 某些地区的阿里ECS安全组只能使用
专用网络,区别于经典网络的公网与内网可单独配置,专用网络安全组默认标灰内网为不可修改,通过查询阿里的文档,发现专用网络的安全组配置在公网与内网中均会生效 - Linux非root用户默认没有1024以下端口使用的权力
Tomcat从安装到配置Https SSL证书的更多相关文章
- Tomcat配置 https SSL证书
HTTP与HTTPS的区别:HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全,为了保证这些隐私数据能加密传输,于是网景公司设计了SSL(Secure Soc ...
- 一文教您如何通过 Docker 搭建反向代理 Ngnix,并配置 Https SSL 证书
欢迎关注个人微信公众号: 小哈学Java, 每日推送 Java 领域干货文章,关注附送 100G 海量学习资源哟!! 个人网站: https://www.exception.site/docker/h ...
- HappyAA服务器部署笔记1(nginx+tomcat的安装与配置)
这是本人的服务器部署笔记.文章名称叫"部署笔记1"的原因是之后我对这个进行了改进之后,会有"部署笔记2","部署笔记3"...循序渐进,估计 ...
- CentOS系统Tomcat 8.5或9部署SSL证书
本文档介绍了CentOS系统下Tomcat 8.5或9部署SSL证书的操作说明. 环境准备 操作系统:CentOS 7.6 64位 Web服务器:Tomcat 8.5或9 前提条件 已从阿里云SSL证 ...
- office web apps安装部署,配置https,负载均衡(五)配置服务器场
前提条件:您已经完成了域控制器的配置,拥有域账号,并且已经安装了OWA启动所需要的必要软件: 具体步骤可以参考: office web apps安装部署,配置https,负载均衡(一)背景介绍 off ...
- 全球可信并且唯一免费的HTTPS(SSL)证书颁发机构:StartSSL
全球可信并且唯一免费的HTTPS(SSL)证书颁发机构:StartSSL http://blog.s135.com/startssl/ 购买权威机构的证书一年大概得七八千元,其实这是不值得的,所以一直 ...
- mac 下JDK 与 tomcat 的安装与配置
一.Mac下JDK的安装 1.先检测Mac是否已经安装过JDK,在终端中输入java 或者 javac 显示说明,表明已经安装过JDK,JDK版本查询终端键入java -version,终端会返回JD ...
- TomCat的安装与配置方法
经过自己的研究,各种烦,所以要写个博客,帮助大家安装这个软件. 一.安装TomCat(因为大家都安装了jdk,所以就不写了) 1.下载TomCat 网址如下:http://tomcat.apache. ...
- TOMCAT的安装部署配置(配图解)
TOMCAT的安装部署配置 前提已经成功搭建配置JDK 下载好压缩包后,直接解压至某一目录下,目录中不能包含中文 双击安装文件,出现如下界面 点击[NEXT],出现如下界面 点击[I AGREE],出 ...
随机推荐
- fakeroot与sudo的区别
fakeroot 可以用来模拟 root 权限,以便建立特定权限与档案拥有者的压缩文件案(tar, ar, .deb 等).透过 LD_PRELOAD 的 dynamic loader 功能,用户不必 ...
- PHP_APC扩展dll上传大文件及进度条实例
1.弄好了APC之后,就是使用它了,下面是个例子,是一个进度条上传的例子,作为笔记记录下来 在这个例子之前,我们需要做如下的设置,如果我们需要上传的是大文件的话,请在您的php.ini文件中做如下的设 ...
- vue+vant 购物车的全选和反选
https://blog.csdn.net/wjswangjinsheng/article/details/91392694
- jq制作tab栏
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Java自动生成testcase
package com.citi.sl.tlc.services.tlc.collateralDataProcess.util; import java.io.BufferedWriter; impo ...
- poj1573
题意:给出一个矩形,N,E,S,W分别代表进行移动的方向,如果走出矩形网格则输出经过的网格数,如果在矩形网格内循环,则输出没进入循环之前所走过的网格数和循环所经过的网格数: 思路:创建两个数组,一个字 ...
- git 提交添加 emoij 文字
可能看到 git 提交是文本,就认为他无法使用表情图片,实际上 git 提交是可以添加表情 本文告诉大家如何做出下面图片提交 在 git 提交的时候,可以添加表情,只需要在字符串加上表示表情的文本 如 ...
- java数组简介
数组(Array)是Java 语言中内置的一种基本数据存储结构,通俗的理解,就是一组数的集合,目的是用来一次存储多个数据.数组是程序中实现很多算法的基础,可以在一定程度上简化代码的书写. 备注: 数组 ...
- python基础五之字典
python数据的可变性 通过数据的可变性,可将数据分为可变数据类型和不可变数据类型. 可变数据类型:list,dict (不可哈希) 不可变数据类型:元祖,bool,int,str (可哈希) py ...
- 定位问题 vue+element-ui+easyui(兼容性)
项目背景:靠近浏览器窗口的各个方向(左上.下.左.右)都有不同的模态框悬浮于窗口,这里针对于底部组件定位的选择(主要针对pc端垂直方向上的定位) 1.百分比:easyui的window窗口定位方式:设 ...