Centos7-JDK8-Tomcat8-Nginx-Lets Encrypt完成SSL认证


先明确一下各个安装目录:

Jdk: /usr/local/jdk1.8.0_191

Tomcat: /usr/local/apache-tomcat-8.5.35

Nginx: /usr/local/nginx

环境变量:/etc/profile, 更新环境变量 source /etc/profile

Nginx Conf文件:/usr/local/nginx/conf/nginx.conf

域名以下都用:aaa.bbb.ccc.ddd 来代替


1. 安装centos7 步骤略

2. 设置好ip 步骤略

3.安装jdk

3.1 删除自带jdk

    卸载OpenJDK

    采用前面的方式安装CentOS7时,默认安装了OpenJDK1.8的,OpenJDK其实就是也是在Java规范上的另一种实现,就如同Mono也是按照微软的.NET规范实现的一样,在一个平台上编译后的文件可以直接在另一个平台上运行,反正几年前我就干过在Windows上用Microsoft Visual Studio编写ASP.NET程序然后放在Linux系统上借助Apache+Mono+xsp运行。

    因为后面还有更多内容依赖于Java,所以这里就卸载OpenJDK而安装Oracle JDK了。

检查当前系统是否安装JDK,运行命令:

rpm -qa | grep jdk

得到结果如下:

java-1.8.0-openjdk-headless-1.8.0.131-2.b11.el7_3.x86_64

java-1.8.0-openjdk-1.8.0.131-2.b11.el7_3.x86_64

copy-jdk-configs-1.2-1.el7.noarch

卸载OpenJDK,运行命令:

1 yum remove java-1.8.0-openjdk-1.8.0.131-2.b11.el7_3.x86_64

2 yum remove java-1.8.0-openjdk-headless-1.8.0.131-2.b11.el7_3.x86_64

此时如果再运行rpm -qa | grep jdk就会看到java-1.8.0-openjdk-1.8.0.131-2.b11.el7_3.x86_64被卸载了。

3.2 安装jdk(所有的安装文件下载到"/usr/local/softbak",包括jdk,tomcat等)

3.2.1 安装wget, 

    yum install wget

3.2.2 下载jdk:

    wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u191-b12/2787e4a523244c269598db4e85c51e0c/jdk-8u191-linux-x64.tar.gz


1. jdk下载

3.2.3 解压

tar -zxvf jdk-8u191-linux-x64.tar.gz

生成jdk1.8.0_191


2. 解压

3.2.4 移动

移动jdk1.8.0_191 到"/usr/local"

mv jdk1.8.0_191/ /usr/local/


3. 移动

3.2.5 设置环境变量

配置环境变量(vim没有安装,yum install vim)

vim /etc/profile

新增环境变量:

export JAVA_HOME=/usr/local/jdk1.8.0_191

export JRE_HOME=${JAVA_HOME}/jre

export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib

export PATH=${JAVA_HOME}/bin:$PATH


4. 修改环境变量

3.2.6 更新环境变量

source /etc/profile


5. 更新环境变量

4. 安装Tomcat

4.1 下载

wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.35/bin/apache-tomcat-8.5.35.tar.gz

4.2 解压

tar -zxvf apache-tomcat-8.5.35.tar.gz


4.3 移动

mv apache-tomcat-8.5.35.tar.gz ../


4.4 开放端口

firewall-cmd --zone=public --add-port=8080/tcp --permanent(开启8080端口)

firewall-cmd --zone=public --add-port=80/tcp --permanent(开启80端口)

firewall-cmd --zone=public --add-port=443/tcp --permanent(开启443端口,https用)

firewall-cmd --reload

//firewall-cmd --zone= public --remove-port=80/tcp --permanent(关闭端口备用)

4.5 开启tomcat服务

sh /usr/local/apache-tomcat-8.5.35/bin/startup.sh

tail -f /usr/local/apache-tomcat-8.5.35/logs/catalina.out (查看tomcat实时日志)

4.6 测试是否连通

aaa.bbb.ccc.ddd:8080

4.7 关闭tomcat服务

sh /usr/local/apache-tomcat-8.5.35/bin/shutdown.sh

4.8  配置tomcat默认启动项目 (项目名子为Cluster)

改动配置文件server.xml

4.9 添加<Context path="" docBase="Cluster" debug="0" reloadable="true"/>节点,当中docBase为webapps中的项目。注意,<Context>一定要加在<Host>节点中。样例例如以下:

<Host name="localhost" appBase="webapps"

            unpackWARs="true" autoDeploy="true"

            xmlValidation="false" xmlNamespaceAware="false">

<Context path="" docBase="Cluster" debug="0" reloadable="true"/>

5 安装Nginx

5.1. gcc 安装

安装 nginx 需要先将官网下载的源码进行编译,编译依赖 gcc 环境,如果没有 gcc 环境,则需要安装:

yum install gcc-c++

5.2. PCRE pcre-devel 安装

PCRE(Perl Compatible Regular Expressions) 是一个Perl库,包括 perl 兼容的正则表达式库。nginx 的 http 模块使用 pcre 来解析正则表达式,所以需要在 linux 上安装 pcre 库,pcre-devel 是使用 pcre 开发的一个二次开发库。nginx也需要此库。命令:

yum install -y pcre pcre-devel

5.3. zlib 安装

zlib 库提供了很多种压缩和解压缩的方式, nginx 使用 zlib 对 http 包的内容进行 gzip ,所以需要在 Centos 上安装 zlib 库。

yum install -y zlib zlib-devel

5.4. OpenSSL 安装

OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及 SSL 协议,并提供丰富的应用程序供测试或其它目的使用。

nginx 不仅支持 http 协议,还支持 https(即在ssl协议上传输http),所以需要在 Centos 安装 OpenSSL 库。

yum install -y openssl openssl-devel

5.5.下载 https://nginx.org/en/download.html

wget https://nginx.org/download/nginx-1.14.1.tar.gz


5.6.解压,移动

tar -zxvf nginx-1.14.1.tar.gz

mv nginx-1.14.1.tar.gz ../


5.7.编译

i. $   ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module     $默认安装在/usr/local/nginx   (ssl_module要安装后面要用)

ii. $   make  

iii. $   make install      

iv. whereis nginx

5.8.启动、停止nginx

cd /usr/local/nginx/sbin/

./nginx (启动)

./nginx -s stop

./nginx -s quit

./nginx -s reload

5.9 访问测试是否成功

aaa.bbb.ccc.ddd:80

6 Nginx+Tomcat代理配置(设置完成后aaa.bbb.ccc.ddd:80会直接跳转到本地127.0.01:8080)

6.1. 使用whereis nginx命令找到nginx所在的目录并进入目录内的conf文件夹找到ngnix.conf配置文件:

upstream aaa.bbb.ccc.ddd {  #这里的名称要跟proxy_pass内的名称一致 <br>

        server 127.0.0.1:8080 weight=1; #weight:权重,默认是1,数值越大提供服务的次数就越多 <br>

        server 127.0.0.1:8081 weight=1; <br>       

        server 127.0.0.1:8083 down; #down表示当前的服务暂不参于负载<br>       

        server 127.0.0.1:8084 backup; #backup 其它所有非backup机器down或者忙时,才会请求backup机器。


server { 

    listen 80; 

    server_name aaa.bbb.ccc.ddd; 

    access_log logs/aaa.bbb.ccc.ddd.access.log; 

    error_log logs/aaa.bbb.ccc.ddd.error.log; 

    #root html; 

    #index index.html index.htm index.jsp index.php; 


    location / { 

        proxy_pass aaa.bbb.ccc.ddd; #这里的aaa.bbb.ccc.ddd与上面的upstream要一样

    } 

}

6.2. 关闭8080端口,对外只可以通过nginx 80端口转发过来

i. firewall-cmd --zone=public --remove-port=8080/tcp --permanent

ii. firewall-cmd --reload

7 Https Let's Encrypt

7.1. 用certbot-auto安装

1. wget https://dl.eff.org/certbot-auto

2. chmod a+x ./certbot-auto

3. ./certbot-auto

7.2. 生成证书

./certbot-auto certonly --text --agree-tos --email ****@126.com --standalone -d aaa.bbb.ccc.ddd  (用的standalone方式)

参考:

生成证书过程中需要鉴权。有多种方式,比如 webroot 、 standalone 、 apache、 nginx 、 manual 等。我使用过前两种。 这两种中,简单一点的是 standalone。不过,这种方式需要把现有的 WebServer 停掉,因为这种方式下 certbot 需要占用 80 端口。

# ./certbot-auto certonly --text --agree-tos --email webmaster@example.com --standalone -d example.com -d www.example.com -d service.example.com

-d 参数指定域名,可多个。一般第一个是主域名。

webroot 方式稍微繁琐一些,但好处是不需要关停现有的 WebServer 。此方法需要在域名对应的根目录下新建 .well-known 目录并写入若干文件供验证服务访问。 因此需要配置 WebServer 允许外部访问 http://example.com/.well-known 路径。配置方法请参考相应 WebServer 的文档。Nginx 的默认配置应该不用修改,Apache 就不知道了。 另外,不同的域名的根路径可能不同,下面的例子中可以看到为不同的域名指定不同的根路径。

# ./certbot-auto certonly --text --agree-tos --email webmaster@excample.com --webroot -w /var/www/example -d example.com -d www.example.com -w /var/service/example -d service.ulefa.com

无论使用那种方式,运行以上命令后都会在 /etc/letsencrypt 生成一堆东西,包括证书。

cert.pem  - Apache服务器端证书 

chain.pem  - Apache根证书和中继证书 

fullchain.pem  - Nginx所需要ssl_certificate文件 

privkey.pem - 安全证书KEY文件

Nginx环境,就只需要用到fullchain.pem和privkey.pem两个证书文件

来自 <https://www.cnblogs.com/ly-radiata/articles/6119374.html>

7.3. 修改Nginx的Conf文件(/usr/local/nginx/conf/nginx.conf:)

7.3.1设置跳转的tomcat地址

7.3.2设置http请求跳转到https请求

7.3.3设置https请求和ssl证书

启动Nginx: /usr/local/nginx/sbin/nginc

启动tomcat: sh /usr/local/apache-tomcat-8.5.35/bin/startup.sh

测试:

访问 aaa.bbb.ccc.ddd 会自动跳转到https://aaa.bbb.ccc.ddd

7.3.4. SSL证书续期

进入 到 /usr/local/softbak,,, 有之前下载的certbot-auto目录


运行 ./certbot-auto renew

由于目前没有过期,所以提示不用renew

renew需要用到80端口,在renew之前要把nginx关闭,



8 war包部署

8.1. 复制war包到 /usr/local/apache-tomcat-8.5.35/webapp/

8.2.配置tomcat默认启动项目 参考本页:4.8


8.3.重启tomcat并访问,查看证书



Over!!!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 162,710评论 4 376
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 68,839评论 2 308
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 112,295评论 0 255
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,776评论 0 223
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 53,198评论 3 297
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 41,074评论 1 226
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,200评论 2 322
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,986评论 0 214
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,733评论 1 250
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,877评论 2 254
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,348评论 1 265
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,675评论 3 265
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,393评论 3 246
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,209评论 0 9
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,996评论 0 201
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 36,212评论 2 287
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 36,003评论 2 280

推荐阅读更多精彩内容