Archive

Posts Tagged ‘keytool’

Tomcat 下配置 HTTPS 数字证书

March 20th, 2010 lennydou No comments

在Tomcat下配置HTTPS的证书, 用户第一次访问需要下载安装证书,然后以后访问就可以以安全连接的方式访问了.配置过程首先需要使用JDK自带的keytool来生成一个keystore文件,然后从keystore文件导出一个certreq文件,然后使用该文件到www.freeca.cn 生成一个证书文件,再把该证书文件导入JVM就OK了.

具体配置过程如下:

( 我的参数如下: IP地址192.168.2.101,用户名是lenny,密码是123456,组织都是buaa,城市是Beijing,使用的操作系统是win7 )

1. 打开 cmd ,生成keystore文件lenny

keytool -genkey -alias lenny -keyalg RSA  -keystore C:\lenny -validity 36500 -keysize 512

其中lenny是别名,可以随便取;-keyalg RSA是加密算法;-keystore C:\lenny 是生成的文件(在C盘下);       -validity 36500是有效期为10年;-keysize 512生成的密钥是512位的。

( 注意: 填写具体信息时,”名字和姓氏”一定是你的域名或IP地址,比如我在实验室没有域名,IP地址为192.168.2.101,所以我的”名字和姓氏”填写的是192.168.2.101,所以实验室的其他电脑也可以使用https访问我的Web应用程序  )

 

2. 使用 keytool -certreq 命令生成certreq文件 C:\serverreq

keytool -certreq -keystore c:\lenny -alias lenny -file c:\serverreq  

3. 从C:\lenny.文件中生成了CSR文件C:\serverreq文件, 然后使用notepad++打开c:\serverreq文件。把里面的内容复制出来,我的文件serverreq内容大概是

—–BEGIN NEW CERTIFICATE REQUEST—–
MIIBITCBzAIBADBnMQswCQYDVQQGEwJjbjEQMA4GA1UECBMHQmVpamluZzEQMA4GA1UEBxMHQmVp
amluZzEPMA0GA1UEChMGYmVlbHVuMQ8wDQYDVQQLEwZiZWVsdW4xEjAQBgNVBAMTCWxvY2FsaG9z
dDBcMA0GCSqGSIb3DQEBAQUAA0sAMEgCQQCYIMDa/LxbGBbdL3jEa8zMzBMKQdtNVib0rO4rVz4J
FiDfZzpsMRPaCCNR7dMN92da/hnnhrYbMQTknrMlj6dxAgMBAAGgADANBgkqhkiG9w0BAQUFAANB
AGUFd9d9FHNH6oFLMmL6s5RBW7tVa4v8j4pS5vQNGE/4DFbRv+MyyVyZvNcetlNaLjuFcyoN7PB8
N9L33Y/D9to=
—–END NEW CERTIFICATE REQUEST—–

然后打开 http://www.freeca.cn 网站,然后在申请证书Tab里面选择 CSR 申请方式,把上述内容粘贴到文本框中,然后验证 CSR,网站会让你选择一个邮箱,然后会把内容发到你邮箱里。第一封邮件是让你确认你要申请数字证书,确认后会收到第二封邮件,把里面的内容拷贝到记事本,然后保存并把后缀名改成 .cer。我取得名字是lenny.cer。

 

4. 把之前生成的C:\lenny 中的密码信息导入到 C:\lenny.cer文件中

keytool -export -keystore c:\lenny -alias lenny -file C:\lenny.cer

 

5. 把从邮箱中拷贝出的文字生成的C:\lenny.cer文件导入到JVM。导入的方法如下:

cd C:\Program Files\Java\jdk1.7.0\jre\lib\

keytool -import -keystore .\security\cacerts -alias lenny -file c:\lenny.cer

 ( 切记: 这一步需要输入密码,这个密码是 changeit,之前的密码都是创建keystore时的密码123456 )

 

6. 然后设置Tomcat根目录下面的/conf/server.xml,然后修改为

<Connector protocol=”org.apache.coyote.http11.Http11Protocol”
           port=”8443″ minSpareThreads=”5″ maxSpareThreads=”75″
           enableLookups=”true” disableUploadTimeout=”true”
           acceptCount=”100″  maxThreads=”200″
           scheme=”https” secure=”true” SSLEnabled=”true”
           keystoreFile=”C:\lenny” keystorePass=”123456″
           clientAuth=”false” sslProtocol=”TLS”/>

 

7. 然后在网页里输入https://192.168.2.101:8080/ 就可以访问了。第一次访问的时候,还会弹出Certificate Error页面。这是可以安装证书,然后以后访问就可以使用安全连接的方式了。

 ( 注意: 浏览器访问https时,第一次需要安装证书,记得把证书安装到Trusted Root(根)位置 )

 

Categories: 一些老文章

Tomcat6下配置HTTPS

February 27th, 2010 lennydou No comments

我使用的JDK版本为JDK7,使用的的Tomcat版本为6.0.24;配置Tomcat下的HTTPS其实很简单,只需要完成两步工作就可以了;操作系统为Windows 7。

一、生成“服务器证书文件”

我把生成的“服务器证书文件”取名为tomcat.key(也可以取成abc.keystore,随自己喜欢就好)。简单起见,我把tomcat.key放在C盘根目录下面(我的配置环境为windows,linux类似)。
首先使用JDK自带的工具keytool生成一个“服务器证书”,取名为tomcat.key。

C:\Users\Administrator>keytool -genkey -alias tomcat -keyalg RSA -keystore C:\to
mcat.key
输入keystore密码:
再次输入新密码:
您的名字与姓氏是什么?
[Unknown]:  beelun
您的组织单位名称是什么?
[Unknown]:  beelun
您的组织名称是什么?
[Unknown]:  beelun
您所在的城市或区域名称是什么?
[Unknown]:  beijing
您所在的州或省份名称是什么?
[Unknown]:  beijing
该单位的两字母国家代码是什么
[Unknown]:  cn
CN=beelun, OU=beelun, O=beelun, L=beijing, ST=beijing, C=cn 正确吗?
[否]:  y

输入<tomcat>的主密码
(如果和 keystore 密码相同,按回车):

C:\Users\Administrator>jdk -version
‘jdk’ is not recognized as an internal or external command,
operable program or batch file.

C:\Users\Administrator>java -version
java version “1.7.0-ea”
Java(TM) SE Runtime Environment (build 1.7.0-ea-b23)
Java HotSpot(TM) Client VM (build 12.0-b01, mixed mode, sharing)

C:\Users\Administrator>

按照提示,输入密码。我输入的密码为123456(注意:此密码在配置server.xml时需要)。其他信息按照提示输入就可以,在输入tomcat主密码时,我直接键入回车,使其和keystore的密码保持一致。

此时,在C盘下面就生成了一个PCKS1.2格式的数字证书文件C:\tomcat.key。

二、配置server.xml文件

修改tomcat\conf目录下面的server.xml文件,添加一项:

<Connector protocol=”org.apache.coyote.http11.Http11Protocol”
port=”8443″ minSpareThreads=”5″ maxSpareThreads=”75″
enableLookups=”true” disableUploadTimeout=”true”
acceptCount=”100″  maxThreads=”200″
scheme=”https” secure=”true” SSLEnabled=”true”
keystoreFile=”C:\tomcat.key” keystorePass=”123456″
clientAuth=”false” sslProtocol=”TLS”/>

需要注意一行“keystoreFile=”C:\tomcat.key” keystorePass=”123456″”,其中keystorefile是你生成的“服务器证书文件”,keystorePass是该服务证书文件的密码。

三、在浏览器地址栏里输入 https://localhost:8443/ 检验一下就OK了。

Update
From http://forums.java.net/jive/message.jspa?messageID=282519

I found some hints on the web that
CN should be the fully-qualified domain name of your server host

I replaced “localhost” with “pc_name”.”domain_name”
and it worked. They (pc_name and domain_name) are concatenated by dot.

Note:
My “domain_name” contains dots too.

I tested certificates on the same PC, but maybe this help you.

Categories: 一些老文章