如何使用java中的https访问Web应用程序

时间:2012-01-01 16:41:05

标签: java web-applications https web ssl-certificate

我想在java中使用https访问Web应用程序。我是这个领域的新手。我从一些博客中读到,可以通过生成某种身份证书来制作它。是否有任何网站提供免费证书?我可以参考任何博客或网站。

感谢

3 个答案:

答案 0 :(得分:10)

您需要获得CA(证书颁发机构)批准的SSL证书,以便您的客户在使用您的webapp时不会在其浏览器中收到警告。要获得此类证书,您通常需要向CA支付一些费用。但是,出于测试目的,您可以使用自签名证书。

您可以生成自签名证书并将其放在服务器上。稍后您可以使用真实证书替换它。如果您已经拥有真实证书,请跳到我的答案的第2步。生成自签名证书的方法有所不同,但基本上您必须执行以下操作(抽象):

<强> 1。生成自签名证书:

您可以使用大量工具和程序,但不知何故,我发现生成自签名证书的最常用方法是:

a) java的keytool - http://docs.oracle.com/javase/1.4.2/docs/tooldocs/windows/keytool.html b) openssl - http://www.sslshopper.com/article-most-common-openssl-commands.html

两种方法都是绝对等价的,你喜欢哪一种方法(我使用openssl)

<强> 2。将此证书放在servlet容器/应用程序服务器中。

有许多servlet容器和应用程序服务器,并且在不同版本的服务器/容器和所选配置之间放置证书的说明也各不相同。下面我将列出我认为现在最受年轻人欢迎的那些......

a) tomcat 7 - http://tomcat.apache.org/tomcat-7.0-doc/ssl-howto.html

b) glassfish - http://artur.ejsmont.org/blog/content/how-to-generate-self-signed-ssl-certificate-for-glassfish-v3-and-import-it-into-java-keyring

c) jbossWeb (Servlet容器) - http://docs.jboss.org/jbossweb/3.0.x/ssl-howto.html

答案 1 :(得分:5)

您需要SSL证书才能为SSL应用程序提供服务。 SSL证书的问题在于它需要被浏览器信任,因此如果您让人们使用该应用程序,您需要从证书提供商(如Godaddy或其他许多人)那里获得真正的SSL证书。出于测试目的,您可以制作可以使用的“自签名”证书,但使用浏览器的客户端将收到警告,表明证书存在问题。

无法免费获得真正的SSL证书。

我相信您可以通过此答案进行相应的Google查询,以便让您继续前进。

答案 2 :(得分:5)

我意识到这是一个非常老的线程,但你现在可以从名为Let's Encrypt的CA(证书颁发机构)获得免费证书。使用Certbot ACME协议客户端(自动证书管理环境)https://certbot.eff.org/可以轻松获取证书。客户端需要在您的服务器中进行root访问。

1)使用certbot-auto脚本

安装Cerbot
wget https://dl.eff.org/certbot-auto
chmod a+x ./certbot-auto
./certbot-auto --help

2)使用独立插件或webroot插件获取许可证。 Standalone将小型服务器打开到端口80或443,因此任一端口都必须是空闲的。 Webroot使用现有的运行服务器。使用独立运行命令

certbot-auto certonly --standalone --standalone-supported-challenges http-01 -d yourdomain.com

使用webroot插件和独立插件,certonly选项certbot将获取证书并将其存储到/ etc / letsencrypt / live /。

3)Let's Encrypt的证书是短暂的(仅90天)所以请记得续订

certbot-auto renew

4)获得证书后,需要将其转换为PKCS12格式并将其存储到Java密钥库。

openssl pkcs12 -export -in /etc/letsencrypt/live/yourdomain.com/fullchain.pem -inkey /etc/letsencrypt/live/yourdomain.com/privkey.pem -out /etc/letsenscrypt/live/yourdomain.com/pkcs.p12 -name mytlskeyalias -passout pass:mykeypassword

keytool -keystore /path/to/my/keystore -delete -alias ‘mytlskeyalias’ -storepass ‘mystorepassword’

keytool -importkeystore -deststorepass mystorepassword -destkeypass mykeypassword -destkeystore /path/to/my/keystore -srckeystore /etc/letsencrypt/live/mydomain.com/pkcs.p12 -srcstoretype PKCS12 -srcstorepass mykeypassword -alias mytlskeyalias

https://vaadin.com/blog/-/blogs/enabling-https-in-your-java-server-using-a-free-certificate

中详细介绍了所有步骤

然后按照Nikola Yovchev的特定Servlet容器链接启用SSL / TLS。