升级环境:Tomcat可以正常使用

centos6.5

Java1.8

Tomcat9

 

1.  获取 Let’s Encrypt 免费 SSL 证书

# 在当前目录下 新建 ssl 目录
$ mkdir ssl
$ cd ssl

# 从github 网站下载 letsencrypt 
$ git clone https://github.com/letsencrypt/letsencrypt

# 进入 letsencrypt 目录
$ cd letsencrypt

# 获取证书, 选用 standalone 参数,在此需要把 tomcat 服务器关闭(否则可能会报错)
# -d 你的域名 例如:  -d  baidu.com  -d www.baidu.com
$ ./letsencrypt-auto certonly --standalone --email 邮箱 -d baidu.com -d www.baidu.com

如果你看到类似以下的显示,说明你安装成功

centos9安装texinfo centos9安装ssr_tomcat

可以在你的    /etc/letsencrypt/live/域名/         目录下看到一下几个文件

centos9安装texinfo centos9安装ssr_centos9安装texinfo_02

到这一步,说明你已经准备好相关的证书了。  这里最容易出现的问题是 当你 用standalone 下载相关的证书时,你的tomcat 没有关闭。

 

2.  添加ssl证书

添加证书这里其实很容易,之所以在配置的时候出错,是因为网上的教程 大多是针对老版本的 tomcat ,所以配置有一些麻烦,tomcat9 配置的方式还是很容易的。

# 修改 安装 tomcat 目录下的 conf/server.xml 文件


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

    <!--  以下这部分代码在原始文件中是 被注释掉的,取消掉注释 -->
    <Connector port="443" protocol="org.apache.coyote.http11.Http11AprProtocol"
               maxThreads="150" SSLEnabled="true" URIEncoding="UTF-8" >
        <UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
        <SSLHostConfig>
                <Certificate             
                        certificateKeyFile="/etc/letsencrypt/live/你的域名/privkey.pem"
                        certificateFile="/etc/letsencrypt/live/你的域名/cert.pem"
                        certificateChainFile="/etc/letsencrypt/live/你的域名/chain.pem"
                type="RSA" />
        </SSLHostConfig>
    </Connector>

这一步中 的端口号  原始的是  8443 可以保持原端口号, 注意你的系统 将其端口打开

打开端口的具体方式 centos6 和 centos7 的方式也不太一样,具体可以百度。

//修改 web.xml  (web.xml 和 server.xml在同一目录)
//在最后添加下面代码
<security-constraint>
        <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>

安装到这一步的时候,如果正常启动tomcat 服务器 没有实现 https , 可以在 logs/catalina.out 文件中查看具体原因,

我的显示是 没有 apr/tomcat native 库。所以会跳转到第三步

3.安装tomcat-native,apr,apr-util

#  安装apr

$ cd /usr/local/src
$ wget  https://mirrors.cnnic.cn/apache/apr/apr-1.6.3.tar.gz

$ tar -xzvf apr-1.6.3.tar.gz
$ cd apr-1.6.3/
$ ./configure --prefix=/usr/local/apr
$ make && make install


# 安装 apr-util

$ cd /usr/local/src
$ wget  https://mirrors.cnnic.cn/apache/apr/apr-util-1.6.1.tar.gz
$ tar -xzvf apr-util-1.6.1.tar.gz  
$ cd apr-util-1.6.1/
$ ./configure --prefix=/usr/local/apr-util  --with-apr=/usr/local/apr 
$ make && make install


# 在 /etc/profile 文件中 添加以下两句话
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/apr/lib
export LD_RUN_PATH=$LD_RUN_PATH:/usr/local/apr/lib

# 使环境变量 立刻生效
$ source /etc/profile

# 安装tomcat-native    tomcat-native 默认在 tomcat/bin 目录下有,但是我在编译之后发现总是出错,所以从官网,从新下了一个, openssl 如果版本过低的话,建议升级之后在执行命令

$ cd /usr/local/src
$ wget https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-connectors/native/1.2.17/source/tomcat-native-1.2.17-src.tar.gz  
$ tar -xzxf  tomcat-native-1.2.17-src.tar.gz
$ cd /tomcat-native-1.2.17-src/native
$ ./configure --with-apr=/usr/local/apr --with-ssl=yes
$ make && make install

# 接下来 重新启动tomcat 即可

wget 后的链接可能失效 替换可以正常访问的就可以。


参考博客

http://blog.51cto.com/hequan/2064813