跳至主要内容

为 Tomcat 增加 GoDaddy SSL 证书

为了信息安全,一般网站的用户注册和登录过程会使用加密的 HTTP(即HTTPS)传输用户的帐号和密码,这样可以防止“中间人”盗取帐号资料。

假如你的网站是用 Tomcat 直接搭建的,那么主要需要如下几个步骤:
1、购买 SSL 证书。
2、在你的服务器上生成一个私密钥匙(Private Key)。
3、在 SSL 证书销售商那里签名你的 Key。
4、将最终生成的认证证书导入 Tomcat KeyStore
5、修改 Tomcat 的配置。

下面详细讲解。

1、购买 SSL 证书


为网站添加 HTTPS 功能第一步需要购买一个SSL认证证书,目前使用比较广泛的有:

VeriSign 典型客户有 Microsoft Hotmail
Thawte 典型客户有 Google Gmail

不过这些品牌的证书价格不菲,假如你的网站只是想提供加密传输的话,可以购买 GoDaddy 的廉价SSL证书,目前报价是 $49.99/年,不过你可以通过推销链接以 $12.99/年买到,比如这个推销链接:http://www.godaddy.com/ssl/ssl-certificates.aspx?isc=IAPtssl1

2、生成私密钥匙

使用OpenSSL工具可以很容易生成私钥,不过由于我们准备给Tomcat使用,所以直接使用keytool更为方便。
转到 Tomcat 的安装目录,运行
$keytool -keysize 2048 -genkey -alias tomcat -keyalg RSA -keystore tomcat.keystore

然后它会提示你设置一个密码,使用Tomcat常用的“changeit”即可,然后根据提示输入DN信息:
输入keystore密码:changeit  
再次输入新密码: changeit
您的名字与姓氏是什么?
  [Unknown]:  yourdomain.com
您的组织单位名称是什么?
  [Unknown]:  Networking
您的组织名称是什么?
  [Unknown]:  yourdomain.com
您所在的城市或区域名称是什么?
  [Unknown]:  Shenzhen
您所在的州或省份名称是什么?
  [Unknown]:  Guangdong
该单位的两字母国家代码是什么
  [Unknown]:  CN
CN=floatmark.com, OU=Networking, O=Floatmark.com, L=Shenzhen, ST=Guangdong, C=CN 正确吗?
  [否]:  y
输入<tomcat>的主密码 (如果和 keystore 密码相同,按回车):<直接回车>

完成后会在当前目录产生一个 tomcat.keystore 文件,然后在此基础上生成证书签名请求文件:
$ keytool -certreq -keyalg RSA -alias tomcat -file tomcat-yourdomain.csr -keystore tomcat.keystore


同样地,当它问起密码时,输入“changeit”即可,完成后你会得到一个 tomcat-yourdomain.csr 文件。

3、签名你的私钥

登录到你购买 SSL 证书商(比如 GoDaddy),根据提示会进入要求输入 CSR  的页面,用文本编辑器打开刚才生成的 tomcat-yourdomain.csr 文件,把里面的文本内容复制粘贴到页面的表单里即可。SSL 证书商会根据你的域名发送一封验证邮件到域名注册者的Email(所以你要提前注意你的域名注册的Email地址是什么,如果是错误的话需要先修正,否则收不到验证Email)。这个过程可能需要及分钟或者几小时,收到验证Email之后点击里面的链接地址就完成私钥签名了。

4、将证书导入 Tomcat

登录到你购买 SSL 的证书商,下载你的网站证书文件,在 GoDaddy 里你下载会得到一个压缩包,里面放有你的网站证书文件 yourdomain.com.crt,另外还有 GoDaddy 自己的证书(gd_cross_intermediate.crt,gd_intermediate.crt,gd_bundle.crt),这些都需要导入 tomcat 的 keystore 里的。
GoDaddy 的官方教程有些许错误,经过实验发现正确的过程如下:
a、到这里(https://certs.godaddy.com/anonymous/repository.seam)下载 valicert_class2_root.crt 文件,然后导入到 tomcat.keystore:
$ keytool -import -alias root -keystore tomcat.keystore -trustcacerts -file valicert_class2_root.crt

b、导入 gd_cross_intermediate.crt,gd_intermediate.crt 和你网站的证书 yourdomain.com.crt:

$ keytool -import -alias cross -keystore tomcat.keystore -trustcacerts -file gd_cross_intermediate.crt
$ keytool -import -alias intermed -keystore tomcat.keystore -trustcacerts -file gd_intermediate.crt
$ keytool -import -alias tomcat -keystore tomcat.keystore -trustcacerts -file yourdomain.com.crt


5、修改 Tomcat 配置

编辑 Tomcat 的主配置文件 server.xml,在标准的 Connector 下面增加一个 HTTPS 的 Connector,如下:

<Connector port="80" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="443" />
<Connector port="443" protocol="HTTP/1.1" SSLEnabled="true"
               maxThreads="150" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS" 
               keystoreFile="/PATH/TO/YOUR/TOMCAT/tomcat.keystore"
               keystorePass="changeit" />

其中第二行是新增加的,重启 Tomcat 之后,访问 https://yourdomain.com 应该能看到安全链接的效果。

6、其他

假如你在 Tomcat 之前使用了 Apache Httpd、nginx 等方向代理,那么就需要把上面的第2,4,5步骤替换成相应的方法,详细的可以参照 GoDaddy 的官方文档:http://community.godaddy.com/help/category/ssl-certificates/186

参考资料:

Generating a Certificate Signing Request (CSR) - Tomcat 4.x/5.x/6.x
http://community.godaddy.com/help/5276/generating-a-certificate-signing-request-csr--tomcat-4x5x6x

Installing an SSL Certificate in Tomcat 4.x/5.x/6.x
http://community.godaddy.com/help/article/5239

A few frequently used SSL commands
http://shib.kuleuven.be/docs/ssl_commands.shtml

评论

此博客中的热门博文

在家用PC里体验 FreeBSD 8.1(上)

F reeBSD ( http://www.freebsd.org/ ) 是一个开源免费的操作系统,最早接触FreeBSD是约7年前在 @hplcsz 挂bbs的服务器,后来很少关注了,最近接触到 Apple 的 MacOS 和 iOS (基于FreeBSD衍生出来的操作系统)联想起FreeBSD项目,才发现它已经更新到8.1版了。 恰好家里多出一台电脑暂时没有用,于是尝试用FreeBSD 8.1配置一台适合家用的电脑(用来看看新闻灌灌水的那种),于是有了如下一篇文章。 (注:这里假设读者已经有一定的Linux/BSD基础) 首先访问 FreeBSD 项目的官方网站,下载 FreeBSD 8.1的安装镜像文件( ftp://ftp.freebsd.org/pub/FreeBSD/releases/i386/ISO-IMAGES/8.1/ ),这里提供CD版、DVD版和U盘版,考虑到我有DVD刻录机,所以下载了DVD版。 下载过程是一个漫长的等待,期间强烈推荐阅读一下官方的《FreeBSD使用手册》(中文版,以下简称《使用手册》)( http://www.freebsd.org/doc/zh_CN.GB2312/books/handbook/index.html ),如果对Linux/BSD不是很熟悉,前3章是很有必要阅读的,否则会被折腾到2012年。等待DVD镜像下载完,大概已经看到第10章了。 1、安装 FreeBSD 8.1 刻录下载回来的DVD镜像文件,从光驱启动然后选择“Quick模式”即开始安装过程。结合《使用手册》一般没有多大问题,因为这篇文章重点是如何搭建家用PC的环境,所以具体的安装过程这里就省略了。小技巧: A、 FreeBSD 必须安装在主分区,在安装之前你必须腾出一个至少10来GB的主分区。 B、 当安装问你是否安装“Ports(相当于软件商店、软件中心)”时,要选择“YES”。 C、 当安装接近完成时,程序会问你 “Would you like to browse the collection now?“,这一步是问你是否安装DVD上附带的软件,选择Yes,然后把下面这两个大块头选中,这样能避免从网络下载桌面环境的安装文件,节省时间和网络流量,减低碳排放: + X11/xorg-7.5 + gnome/gnom

全新 CentOS 5.5环境挂WordPress3

本文目标:在全新的 CentOS 5.5 (32位)里安装 1、apache 2.2+ 2、mysql 5.1+ 3、php 5.3+ 4、wordpress 3 + 安装 apache, mysql, php apache 2 可以使用 yum 安装。 而 mysql 和 php 由于CentOS源的版本太旧了,所以需要添加另外一个源。这里选用的是 REMI 源,直接下载这个rpm包: http://rpms.famillecollet.com/enterprise/remi-release-5.rpm 安装这个包然后就可以安装 httpd和php了 yum --enablerepo=remi install httpd php php-common 安装php5的附加模块 yum --enablerepo=remi install php-pear php-pdo php-mysql php-pgsql php-pecl-memcache php-gd php-mbstring php-mcrypt php-xml 启动httpd服务之后,在 /var/www/html 里创建一个PHP测试文件比如 test.php,里面写入如下内容 <?php phpinfo(); ?> 浏览一下这个页面 http://localhost/test.php,如果出现PHP测试页面的话就说明 apache 和 php 已经安装成功了。 安装mysql yum --enablerepo=remi install mysql 安装完毕之后登录到 mysql 创建一个名字为 blog 的数据库,添加一个访问帐号。 安装 wordpress 下面开始安装 wordpress 了,首先到官网下载最新版的 wordpress ,然后解压到  /var/www ,要注意因为 apache 会以 root 帐号权限运行,所以为了减少麻烦,最好切换到 root 帐号再做刚才的解压操作以及下面的所有步骤。解压之后形成 /var/www/wordpress 目录,然后把该目录下面的 wp-content 添加其他人写入权限,即 chmod o+w wp-content 因为这个目录是用来存放主题、上传附件等可变

在家用PC里体验 FreeBSD 8.1(下)

在 上一章 讲到如何配置 gnome 桌面环境以及 firefox 浏览器,很快你会发现上网时不能播放 flash,这是因为 Adobe Flash 没有提供 FreeBSD 版本,为了运行这类没有开源只有编译好的 Linux 版程序,我们需要安装一个 Linux 二进制兼容包。[注1] 1、安装 Linux 二进制兼容包 为了确保安装顺利,最好把 FreeBSD Ports 更新一下。[注2] # portsnap fetch 第一次运行这个命令会下载最新的 Ports Collection,大概半小时左右下载完,然后展开安装文件: # portsnap extract 使用 portsnap update 命令更新已安装的 Ports: # portsnap update 这样更新就完成了。下面开始安装 Linux 二进制兼容包,[注3]先开启 Linux KLD 模块: #kldload linux 如果希望 Linux 兼容支持在系统初始化过程中自动启用,则应在 /etc/rc.conf 中增加: linux_enable="YES" 可以使用 kldstat 命令检查KLD模块是否已经加载成功(以百分号开头的命令表示可以用普通帐号操作,下同): % kldstat 如果看到 linux.ko 字样则表示加载成功。下面还要安装 Linux 运行时库, # cd /usr/ports/emulators/linux_base-f10 # make install distclean 这又是一个漫长的等待过程,运行完毕之后还要挂载 Linux 进程文件系统,使用如下命令: # mount -t linprocfs linproc /usr/compat/linux/proc 如果希望机器启动时自动挂载,需要在文件 /etc/fstab 里面加上这一行 linproc    /usr/compat/linux/proc  linprocfs   rw  0   0 2、安装浏览器 Flash 插件 [注4] 我们开始下载安装 Flash 的 Linux 版插件: # /usr/ports/www/linux-f10-flashplugin10 # make install c