`
ldd600
  • 浏览: 103786 次
  • 性别: Icon_minigender_1
  • 来自: 上海
博客专栏
47bb354f-8b5f-3ea6-a206-c7ead38c741c
Hyperic插件开发不完...
浏览量:11273
社区版块
存档分类
最新评论

不用keytool,tomcat打开https

阅读更多

 

网上大多数文章都是用keytool生成自签名根证书,将根证书配置在tomcatserver.xml中。我不太喜欢用keytool,原因:
1.
我们可能换provider,不同的provider会有不同的算法实现,算法的安全性和性能也可能不同,通过代码生成比较方便一些,不同算法的实现要放在classpath上。
2.
通过代码生成还有一个好处,会对整个流程理解的比较清楚,实现的原理到底是怎样的。

 

要用到https,也就是TLS或者SSL,我们需要有证书,要么是法定证书机构(VeriSign,中国估计也有代理)给你签发的可信证书,要么自己给自己颁发一个根证书。自己给自己颁发的证书,浏览器是不信任的,会弹出一个提示框。

 

SSL认证分为双向认证和单向认证(客户端认证服务器),一般做网站单向认证就可,客户端要认证服务器端的证书,认证通过,通过非对称加密算法交换秘密密钥,以后的通信数据通过秘密密钥加密。

 

所以说要想用https,就得现有证书。有证书就得现有公私钥。

    public static KeyPair generateKeyPair() throws NoSuchAlgorithmException,

           NoSuchProviderException {

       // create the keys

       KeyPairGenerator generator = KeyPairGenerator.getInstance("RSA");

       generator.initialize(1024, new SecureRandom());

       return generator.generateKeyPair();

    }

 

 

 

有了公私钥,接着就生成证书。

    public static X509Certificate generateX509V3RootCertificate(KeyPair pair)

           throws NoSuchAlgorithmException, NoSuchProviderException,

           CertificateEncodingException, InvalidKeyException,

           IllegalStateException, SignatureException {

       X509V3CertificateGenerator certGen = new X509V3CertificateGenerator();

        certGen.setSerialNumber(BigInteger.valueOf(System.currentTimeMillis()));

       certGen.setIssuerDN(new X500Principal(

              "CN=localhost, OU=Ldd600 Blog, O=SHA, C=cn"));

       certGen.setNotBefore(new Date(System.currentTimeMillis() - 5000L));

       certGen.setSubjectDN(new X500Principal(

              "CN=localhost, OU=Ldd600 Blog, O=SHA, C=cn"));

       certGen.setPublicKey(pair.getPublic());

       certGen.setSignatureAlgorithm("SHA1WithRSA");

       certGen.setNotAfter(new Date(System.currentTimeMillis()

              + Integer.MAX_VALUE));

       return certGen.generate(pair.getPrivate(), new SecureRandom());

    }

 

    public static X500PrivateCredential createRootCredential(KeyPair rootPair)

           throws Exception {

       X509Certificate rootCert =

              generateX509V3RootCertificate(rootPair);

       return new X500PrivateCredential(rootCert, rootPair.getPrivate());

    }

 

有了证书,我们要将证书存储起来,根证书是自签名的证书,凡是通过根证书签名颁发的证书都是可信任的。根证书需要添加到信任证书链中。而根证书我们自己给自己签名的证书是给SSL协议用的。

KeyStore是用来保存key,证书的。

Tomcatkeystore有两个

Server keystore: 存放的是服务器用的公私钥key

Trust keystore:存放的是所有确定信任的证书。自己给自己颁发的证书当然是值得我们自己信任的。以后可以用来认证通信的另外一方,不过单向认证应该用不到,

 

publicstaticvoid main(String[] args) throws Exception {

      

       //trustsotre, my root certificate

       KeyStore store = KeyStore.getInstance("JKS");

       // initialize

        store.load(null, null);

        KeyPair rootPair = generateKeyPair();

       X500PrivateCredential rootCredential = createRootCredential(rootPair);

       store.setCertificateEntry(TRUST_STORE_NAME, rootCredential.getCertificate());

       store.store(

                new FileOutputStream(TRUST_STORE_NAME + ".jks"),

                TRUST_STORE_PASSWORD);

       // server credentials

       store = KeyStore.getInstance("JKS");

       store.load(null, null);

        store.setKeyEntry(

          SERVER_NAME, rootCredential.getPrivateKey(), SERVER_PASSWORD,

                new Certificate[] { rootCredential.getCertificate() });

        store.store(

          new FileOutputStream(SERVER_NAME + ".jks"), SERVER_PASSWORD);

    }

 

KeyStore文件配置在tomcatserver.xml

  <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"

               maxThreads="150" scheme="https" secure="true"

               clientAuth="false" sslProtocol="TLS"

                 keystoreFile="conf/server.jks" keystorePass="serverPassword" truststoreFile ="conf/trustStore.jks" truststorePass="trustPassword"/>

 

启动tomcat即可

 

打开URL看看效果吧。



 

点是,就可以打开网页了。

 

0
1
分享到:
评论

相关推荐

    keytool+tomcat配置HTTPS双向证书认证结合web实例

    ### keytool+Tomcat配置HTTPS双向证书认证结合Web实例 #### 概述 本文将详细介绍如何使用`keytool`工具配合Tomcat服务器实现HTTPS双向证书认证,并通过具体示例加以说明。该方案主要应用于需要对访问来源进行严格...

    Tomcat配置HTTPS证书认证

    - 打开Tomcat的`conf/server.xml`配置文件。 - 在`&lt;Connector&gt;`标签中添加HTTPS配置,设置端口、Keystore文件路径、别名和密码等信息。 - 示例配置: ```xml SSLEnabled="true" maxThreads="150" ...

    tomcat支持https配置

    标题中的“Tomcat支持HTTPS配置”是指在Apache Tomcat服务器上启用安全套接层(SSL)协议,以提供加密通信和身份验证。这通常涉及到在Web应用中使用HTTPS(HTTP over SSL/TLS)协议,以保护用户的敏感信息,如登录...

    Tomcat-https配置

    3. **配置Server.xml**:打开Tomcat的主配置文件`conf/server.xml`,找到`&lt;Connector&gt;`元素并添加HTTPS配置。一般包括以下属性: - `protocol="HTTPS/1.1"`:指定使用HTTPS协议。 - `SSLEnabled="true"`:启用SSL...

    简单三步教会您 Tomcat 安装SSL证书,Tomcat安装https证书,一看就会,一做就成!

    1. 打开Tomcat的配置文件`server.xml`,这个文件通常位于`conf`目录下。 2. 在`&lt;Server&gt;`或`&lt;Service&gt;`标签内找到`&lt;Connector&gt;`标签,这是配置Tomcat服务器端口的地方。添加一个新的`&lt;Connector&gt;`标签,设置为SSL...

    tomcat全套配置https协议

    在Tomcat中,我们可以使用自签名证书进行测试环境的配置,这通常通过`keys`文件夹中的`keytool`工具来实现。 1. **生成证书** 使用Java自带的`keytool`命令行工具,我们可以创建一个自签名证书。打开终端,输入...

    在tomcat中配置https的总结

    1. **打开命令行工具**(CMD)并切换到Tomcat安装目录下。 2. **使用keytool命令生成自签名证书**。执行如下命令: ```shell keytool -genkey -alias tomcat -keyalg RSA -keypass 111111 -storepass 111111 -...

    在tomcat中使用keytool实现双向验证操作视频

    本教程将详细讲解如何在Tomcat中利用Java自带的keytool工具来生成并配置数字证书,实现双向验证操作。 首先,我们要理解什么是双向认证。在单向认证中,服务器会向客户端展示其数字证书,证明自己的身份,而客户端...

    tomcat https 证书安装

    在Tomcat中,可以使用Java的keytool工具。打开命令行,运行以下命令: ``` keytool -genkey -alias tomcat -keyalg RSA -keystore keystore.jks ``` 这会创建一个名为`keystore.jks`的文件,存储了私钥和自签名...

    tomcat配置https说明文档

    keytool -genkey -v -alias tomcat -keyalg RSA -keystore D:\home\tomcat.keystore -validity 36500 ``` - 这里对命令中的参数进行解释: - `-genkey`:指定生成密钥对。 - `-v`:详细模式,显示详细信息。 -...

    利用tomcat服务器配置https双向认证

    Tomcat 服务器配置 HTTPS 双向认证 Tomcat 服务器配置 HTTPS 双向认证是指在 Tomcat 服务器上配置 SSL/TLS 加密协议,以便...打开 Tomcat 根目录下的 `server.xml` 文件,找到 `Connector` 配置段,修改为如下: ``` ...

    Tomcat 开启基于https的SSL配置

    2. cd 到 Tomcat 的 conf 目录下,打开 server.xml 文件,搜索 HTTPS 找到下面这项: ``` maxThreads="150" SSLEnabled="true" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" ...

    tomcat配置https所需要的附件

    4. **编辑Server.xml**:打开Tomcat的主配置文件`$CATALINA_HOME/conf/server.xml`,找到`&lt;Connector&gt;`标签,为HTTPS添加一个新的连接器。下面是一个示例配置: ```xml maxThreads="150" SSLEnabled="true"&gt; ...

    TOMCAT 6 中配置HTTPS

    Tomcat提供了内置的`keytool`工具来生成密钥对。打开命令行,使用以下命令: ``` keytool -genkey -alias tomcat -keyalg RSA -keystore keystore.jks ``` 这里,`-alias`指定别名,`-keyalg`指定算法(通常为...

    tomcat 快速实现https访问(Linux)

    2. **配置Tomcat的`server.xml`**:打开Tomcat的配置文件`conf/server.xml`,找到`&lt;Connector&gt;`标签,然后添加一个新的SSL连接器。以下是一个示例配置: ```xml SSLEnabled="true" maxThreads="150" ...

    tomcat配置https

    打开Tomcat的`conf/server.xml`文件,找到HTTPS相关的`&lt;Connector&gt;`标签,解除注释并修改配置,如下: ```xml &lt;Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" maxThreads="150" scheme="...

    tomcat用https替换http的方法

    2. **配置Tomcat服务器**:打开Tomcat的`conf/server.xml`文件,找到`&lt;Connector&gt;`标签。添加一个新的`&lt;Connector&gt;`元素来配置HTTPS端口,例如: ```xml SSLEnabled="true" maxThreads="150" minSpareThreads=...

Global site tag (gtag.js) - Google Analytics