Linux 项目 nginx、tomcat HTTP转HTTPS

1、nginx配置https

nginx配置https需要私钥和证书,使用openssl生成私钥和自签证书。

首先安装openssl

yum -y install openssl openssl-devel

新建存储证书和密钥的目录,并进入该目录

mkdir /usr/nginx/cer

cd /usr/nginx/cer

生成私钥和自签证书

openssl req -newkey rsa:2048 -nodes -keyout rsa_private.key -x509 -days 365 -out cert.crt -subj "/C=CN/ST=GD/L=SZ/O=vihoo/OU=dev/CN=当前服务器的IP/emailAddress=test@qq.com"

// 简述参数
-newkey 自动生成密钥,rsa:2048 使用2048位RSA非对称加密算法,-nodes 不加密密钥,-keyout rsa_private.key 生成私钥rsa_private.key。不要生成公钥,签发的证书中包含了公钥。

-x509 证书类型是自签证书,-days 365 证书有效期是365天,-out cert.crt 生成cert.crt文件,cert.crt是自签证书。

-subj 生成证书的信息,包括国家(只能填写两个字符)、省/洲、市、公司、部门、个人信息(填写服务器IP即可)、邮箱。

查看目录下私钥和证书是否已生成;

修改nginx配置文件

ssl_certificate "/usr/nginx/cer/cert.crt";
ssl_certificate_key "/usr/nginx/cer/rsa_private.key";

也有配置比较全的参数

ssl on;    
ssl_certificate "/usr/nginx/cer/cert.crt";
ssl_certificate_key "/usr/nginx/cer/rsa_private.key";

ssl_session_cache    shared:SSL:10m;
ssl_session_timeout  5m;
# ssl_server_tokens off;
# ssl_ciphers HIGH:!aNULL:!MD5;
ssl_ciphers  ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers  on;

重启nginx
 

systemctl restart nginx
// 或者 cd到nginx安装路径下
nginx -s reload

最后 https://IP:端口/ 访问即可。

2、tomcat配置https

首先创建证书,使用JDK自带的keytool工具来生成证书

// cd 到jdk的安装目录 keytool
cd /usr/java/bin/

./keytool -genkey -alias tomcat -keyalg RSA -keystore /usr/tomcat/cer/tomcat.keystore  -validity 6666

// tomcat 指的是别名 -validity 6666 指的是有效时间 
// tomcat.keystore 需要生成的证书,将证书根据开发要求放到指定位置

输入密钥库口令:  test
再次输入新口令:   test
您的名字与姓氏是什么?
  [Unknown]:  192.168.1.100   这里最好写服务器的IP或者域名
您的组织单位名称是什么?
  [Unknown]:  test      
您的组织名称是什么?
  [Unknown]:  test       可随意写
您所在的城市或区域名称是什么?
  [Unknown]:  beijing			可随意写
您所在的省/市/自治区名称是什么?
  [Unknown]:  beijing			可随意写
该单位的双字母国家/地区代码是什么?
  [Unknown]:  cn			
CN=www.bo.org, OU=xinwei, O=xinwei, L=bj, ST=bj, C=cn是否正确?
  [否]:  y 
  
// 然后要求我们输入tomcat的主密码,我们设置跟上面第一次输入的密码相同,按回车


// 这里会提示 
keytool -importkeystore -srckeystore /usr/tomcat/cer/tomcat.keystore -destkeystore /usr/tomcat/cer/tomcat.keystore -deststoretype pkcs12

// 如果需要导出证书的可以执行
keytool -export -alias tomcat -keystore /usr/tomcat/cer/tomcat2.keystore -file /usr/tomcat/cer/tomcat.cer

修改tomcat配置文件server.xml

<!--  443访问端口 -->
<Connector
     protocol="org.apache.coyote.http11.Http11NioProtocol"
     port="443" maxThreads="200"
     scheme="https" secure="true" SSLEnabled="true"
     keystoreFile="生成的证书路径,如上面配置的/usr/tomcat/cer/tomcat.keystore" 
     keystorePass="证书密码,如上面配置的test"
     clientAuth="false" sslProtocol="TLS"
/>

如果是springboot项目需要配置

需要在启动类加如下代码

    @Bean
    public Connector connector(){
        Connector connector=new Connector("org.apache.coyote.http11.Http11NioProtocol");
        connector.setScheme("http");
        connector.setPort(80);
        connector.setSecure(false);
        connector.setRedirectPort(8080);    #这里的8080可更改为项目需要端口,其它不做修改
        return connector;
    }

    @Bean
    public TomcatServletWebServerFactory tomcatServletWebServerFactory(Connector connector)            
    {
        TomcatServletWebServerFactory tomcat=new TomcatServletWebServerFactory(){
            @Override
            protected void postProcessContext(Context context) {
                SecurityConstraint securityConstraint=new SecurityConstraint();
                securityConstraint.setUserConstraint("CONFIDENTIAL");
                SecurityCollection collection=new SecurityCollection();
                collection.addPattern("/*");
                securityConstraint.addCollection(collection);
                context.addConstraint(securityConstraint);
            }
        };
        tomcat.addAdditionalTomcatConnectors(connector);
        return tomcat;
    }

然后修改项目的配置文件

## 这里配置的是证书存放的位置
server.ssl.key-store=/usr/tomcat/cer/tomcat.keystore
## 这里是查看证书需要的密钥
server.ssl.key-store-password=test
## 这是以上步骤申请证书时的那个别名
server.ssl.key-alias=tomcat
## 这里的PKCS12格式配置的是一种互联网标准
server.ssl.key-store-type=PKCS12

重新启动 https访问

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风起未来

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值