阿里云下centos8环境部署和tomcat10 + nginx1.20的安装和https配置

  • Post author:
  • Post category:其他



1.centos安装java 1.8.0(自动安装,手动请自行百度)


2.下载filezilla等ftp工具,方便传文件


3.安装tomcat 10.0.7


4.tomcat 10.0.7的ssl部署


5.安装nginx 1.20.1


6.nginx 的ssl证书转换,由.jks转.crt和.key


7.nginx 1.20.1 ssl的部署


前置条件:

本地客户端      mac

阿里云购买的域名已备案

阿里云安全组先开放80(nginx),443(nginx),8080(tomcat),8443(tomcat),3306(mysql)等端口,tomcat测试完后,可以关闭8080和8443,避免用户直接访问tomcat。

服务器各系统软件示例版本:

centos         8.3

java              1.8.0

tomcat         10.0.7

nginx            1.20.1

提示:mac下下载tomcat和nginx的tar.gz包,safari下载会自动解压,不要用safari下载,我是使用谷歌浏览器或迅雷下载的。


1.centos安装java 1.8.0(自动安装,手动请自行百度)

首先查询yum上可供安装的java相关sdk

yum -y list java*

安装java版本,如果安装1.8.0的话

yum -y install java-1.8.0-openjdk*

查询安装是否成功

java -version

2.下载filezilla等ftp工具,方便传文件

下载安装传送门:

https://filezilla-project.org/download.php?type=client

选择sftp方式连接服务器

3.安装tomcat 10.0.7

下载tomcat的tar.gz压缩包

下载传送门:

https://tomcat.apache.org/download-10.cgi

利用ftp工具将下载的tomcat上传到服务器的usr/local目录下

解压tomcat压缩包

cd /usr/local

tar -zxv -f apache-tomcat-10.0.7.tar.gz

为文件夹改名(例如修改名为tomcat10)

mv apache-tomcat-10.0.7 tomcat10

启动tomcat测试

cd tomcat10/bin

./startup.sh

关闭tomcat

./shudown.sh

查询端口信息

netstat -lntup

4.tomcat 10.0.7的ssl部署


下载阿里云上的证书,类型为.jks,并修改jks的名字为tomcat

在tomcat目录下创建cert目录

并将jks和密码文件放到cert目录下

用ftp下载/usr/local/tomcat10/conf/下的server.xml到本地

添加

<Connector
    protocol="org.apache.coyote.http11.Http11NioProtocol"
    port="8443"
    maxThreads="150"
    SSLEnabled="true">
        <SSLHostConfig>
            <Certificate
                certificateKeystoreFile="/usr/local/tomcat10/cert/tomcat.jks"
                certificateKeystorePassword="l9MgFlJj"
                type="RSA"
            />
        </SSLHostConfig>
</Connector>

并将server.xml上传,重启tomcat

如果需要强制将http使用https

下载/usr/local/tomcat10/conf/下的web.xml

并在</welcome-file-list>后面添加

<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>

并将web.xml上传,重启tomcat

5.安装nginx 1.20.1

下载传送门:

https://nginx.org/en/download.html

利用ftp工具将下载的nginx的tar.gz上传到服务器的usr/local目录下

解压压缩包

cd /usr/local

tar -zxv -f nginx-1.20.1.tar.gz

下载编译相关工具

yum -y install gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel

编译nginx

cd nginx-1.20.1

./configure –prefix=/usr/local/nginx –with-http_stub_status_module –with-http_ssl_module –with-http_v2_module –with-http_sub_module –with-http_gzip_static_module –with-pcre

安装nginx

make && make install

启动nginx

cd /usr/local/nginx/sbin

./nginx

提示:

如果遇到nginx报错open() “/usr/local/nginx/logs/nginx.pid” failed (2: No such file or director

/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

其他命令

正常关闭

./nginx -s quit:

强制关闭

./nginx -s stop:

重启

./nginx -s reload

6.nginx 的ssl证书转换,由.jks转.crt和.key

将tomcat.jsk放置到桌面

keytool -list -keystore tomcat.jks

例如我查到的PrivateKeyEntry名字为alias-key,如果是其他名字,将以下命令中的alias-key修改

转p12

keytool -importkeystore -srckeystore tomcat.jks -srcalias alias-key -destkeystore newkeystore.p12 -deststoretype PKCS12

查看证书库

keytool -deststoretype PKCS12 -keystore newkeystore.p12 -list

提取证书

openssl pkcs12 -in newkeystore.p12 -nokeys -clcerts -out server-ssl.crt

openssl pkcs12 -in newkeystore.p12 -nokeys -cacerts -out gs_intermediate_ca.crt


server-ssl.crt是SSL证书,gs_intermediate_ca.crt是中级证书,俩个合并到一起才是nginx服务器所需要的证书

合并证书

cat server-ssl.crt gs_intermediate_ca.crt >server.crt

提取私钥

openssl pkcs12 -nocerts -nodes -in newkeystore.p12 -out server.key

nginx需要的证书server.crt和私钥server.key就获取到了

7.nginx 1.20.1 ssl的部署

在nginx下创建目录cert,并将server.crt和server.key上传到cert目录下

下载/usr/local/nginx/conf中的nginx.conf到本地修改

80端口重定向到8080端口

server {
        listen       80;
        server_name  localhost;#如果是其他服务器则为域名,一个服务器则用localhost

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            proxy_pass  http://localhost:8080; #如果是其他服务器则为域名,一个服务器则用localhost
            proxy_set_header        X-Real-IP       $remote_addr;
            proxy_set_header        Host            $host:$server_port; 
            proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;  
            proxy_pass_request_headers              on;
            proxy_set_header X-Forwarded-Proto  $scheme;
            proxy_redirect off;
            proxy_connect_timeout      240;
            proxy_send_timeout         240;
            proxy_read_timeout         240;
        }
}

添加443端口,并重定向到8443端口

server {
        listen       443 ssl;
        server_name  localhost;

        ssl_certificate      /usr/local/nginx/cert/server.crt;
        ssl_certificate_key  /usr/local/nginx/cert/server.key;

        ssl_session_cache    shared:SSL:10m;
        ssl_session_timeout  5m;

        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers  ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
        ssl_prefer_server_ciphers  on;

        location / {
            proxy_pass https://localhost:8443;
            proxy_set_header        X-Real-IP       $remote_addr;
            proxy_set_header        Host            $host:$server_port; 
            proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;  
            proxy_pass_request_headers              on;
            proxy_set_header X-Forwarded-Proto  $scheme;
            proxy_redirect off;
            proxy_connect_timeout      240;
            proxy_send_timeout         240;
            proxy_read_timeout         240;
        }
}



版权声明:本文为tcxy0原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。