今天小编给大家带来的是keytool -help 获取 keytool 的用法,这是针对电脑私密文件进行了加密处理,是一些大型公司必备的使用方法但是对电脑的配置也非常的高,有心的小伙伴们可以试一试哦。
keytool -help 获取 keytool 的用法
使用 “keytool -command_name -help” 获取 command_name 的用法
生成密钥对d:\\JDk8\\bin\\keytool -genkeypair -help
从keystore导出证书d:\\jdk8\\bin\\keytool -exportcert -help
导入证书到truststored:\\jdk8\\bin\\keytool -importcert -help
一.tomcat的ssl配置
1.生成密钥对
d:\\jdk8\\bin\\keytool -genkeypair -alias server -keystore server.p12 -storetype PKCS12 -keyalg RSA -storepass changeit -keypass changeit -validity 365 -dname "CN=server, OU=test, O=test, L=TH, ST=GZ, C=CN"
创建一个密钥库文件,并把一个密钥对条目存进去.密钥对条目的详细信息,-alias指定别名,-keyalg指定算法,-keystore指定文件生成位置,-storepass指定密钥库文件管理密码,-keypass指定密钥对密码,-validity指定有效期,指定域的一些信息
2.在server.XML配置.这里使用JSSE配置SSL
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
keystoreFile="conf/server.p12" keystorePass="changeit" keystoreType="PKCS12"
clientAuth="false" sslProtocol="TLS" />12341234
二.jetty的ssl配置
1.创建SSL密钥
openssl genrsa -des3 -out jcg.key
2.创建证书文件
openssl req -new -x509 -key jcg.key -out jcg.crt
输入上面输入的密码123456
Country Name (2 letter code) [XX]:cn
State or Province Name (full name) []:gd
Locality Name (eg, city) [Default City]:gz
Organization Name (eg, company) [Default Company Ltd]:test
Organizational Unit Name (eg, section) []:test
Common Name (eg, your name or your server’s hostname) []:admin
Email Address []:admin@qq.com
3.将证书文件转为PKCS12格式
openssl pkcs12 -inkey jcg.key -in jcg.crt -export -out jcg.pkcs12
输入jcg.key的密码短语123456
输入导出密码123456(可以重新设置)
确定导出密码123456
4.到目前为止,为了配置ssl,已创建了密钥和证书,下面将PKCS12文件导入到Jetty的keystore文件
d:\\jdk7\\bin\\keytool -importkeystore -srckeystore jcg.pkcs12 -srcstoretype PKCS12 -destkeystore keystore
输入keystore的密码123456,并再次输入同样密码确认
输入刚才导出pkcs12文件的密码123456
为Jetty启用SSL
jetty是模块架构,意味着可以通过配置文件启用不同的模块.打开JETTY_HOME目录下的start.ini,添加以下两行
–module=ssl
–module=https
Jetty模块是通过JETTY_HOME/etc目录下的XML文件配置的.我们激活jetty-ssl.xml和jetty-https.xml文件来启用此模块.我们通过这些文件可以修改大量设置(如HTTPS端口,keystore位置),对于这个例子,我们没必要作出任何修改.
配置keystore密码,
先混淆密码
a.转到JETTY_HOME/lib目录
b.运行以下java命令
d:\\jdk7\\bin\\java -cp jetty-util-9.2.11.v20150529.jar org.eclipse.jetty.util.security.Password 123456
c.复制生成的代码,它是以OBF开头
在SSL配置设置密码
a.转到JETTY_HOME/modules目录
b.使用文本编辑器打开ssl.mod文件
c.设置jetty.keystore.password, jetty.keymanager.password, jetty.truststorepassword属性
c.保存文件
修改过的行看起来应当类似:
jetty.keystore.password=OBF:19iy19j019j219j419j619j8
jetty.keymanager.password=OBF:19iy19j019j219j419j619j8
jetty.truststore.password=OBF:19iy19j019j219j419j619j8
启动JETTY
a.转到JETTY_HOME目录
b.运行java -jar start.jar
输出日志类似如下:
2015-06-23 23:04:52.940:INFO:oejs.ServerConnector:main: Started ServerConnector@376b4233{HTTP/1.1}{0.0.0.0:8080}
2015-06-23 23:04:53.127:INFO:oejs.ServerConnector:main: Started ServerConnector@4ddced80{SSL-http/1.1}{0.0.0.0:8443}
2015-06-23 23:04:53.127:INFO:oejs.Server:main: Started @1180ms
5.保护web应用程序
在web.xml加入以下内容,使用此配置,我们已定义了在secure目录下的资源是机密的,访问这些资源要在HTTPS端口通过SSL来访问.其它资源通过HTTP访问.此时此刻,我们在src/main/webapp和src/main/webapp/secure目录相应地创建非安全和安全资源
SSL 协议既用到了公钥加密技术又用到了对称加密技术,对称加密技术虽然比公钥加密技术的速度快,可是公钥加密技术提供了更好的身份认证技术。SSL 的握手协议非常有效的让客户和服务器之间完成相互之间的身份认证,其主要过程如下:
①客户端的浏览器向服务器传送客户端SSL协议的版本号,加密算法的种类,产生的随机数,以及其他服务器和客户端之间通讯所需要的各种信息。
②服务器向客户端传送SSL协议的版本号,加密算法的种类,随机数以及其他相关信息,同时服务器还将向客户端传送自己的证书。
③客户利用服务器传过来的信息验证服务器的合法性,服务器的合法性包括:证书是否过期,发行服务器证书的CA 是否可靠,发行者证书的公钥能否正确解开服务器证书的“发行者的数字签名”,服务器证书上的域名是否和服务器的实际域名相匹配。如果合法性验证没有通过,通讯将断开;如果合法性验证通过,将继续进行第四步。
④用户端随机产生一个用于后面通讯的“对称密码”,然后用服务器的公钥(服务器的公钥从步骤②中的服务器的证书中获得)对其加密,然后传给服务器。
⑤服务器用私钥解密“对称密码”(此处的公钥和私钥是相互关联的,公钥加密的数据只能用私钥解密,私钥只在服务器端保留。详细请参看: http://zh.wikipedia.org/wiki/RSA%E7%AE%97%E6%B3%95),然后用其作为服务器和客户端的“通话密码”加解密通讯。同时在SSL 通讯过程中还要完成数据通讯的完整性,防止数据通讯中的任何变化。
⑥客户端向服务器端发出信息,指明后面的数据通讯将使用的步骤⑤中的主密码为对称密钥,同时通知服务器客户端的握手过程结束。
⑦服务器向客户端发出信息,指明后面的数据通讯将使用的步骤⑤中的主密码为对称密钥,同时通知客户端服务器端的握手过程结束。
⑧SSL 的握手部分结束,SSL 安全通道的数据通讯开始,客户和服务器开始使用相同的对称密钥进行数据通讯,同时进行通讯完整性的检验。
服务器端单向认证:
第一步:进入jdk的安装文件路径下面的bin目录;
第二步:在bin目录下输入以下命令
keytool -genkey -v -alias mykey -keyalg RSA -validity 3650 -keystore c:\\sdust.keystore
-dname "CN=你的ip,OU=cn,O=cn,L=cn,ST=cn,c=cn" -storepass 123456 -keypass 123456
说明:
keytool 是JDK提供的证书生成工具,所有参数的用法参见keytool –help
-genkey 创建新证书
-v详细信息
-alias以”mykey”作为该证书的别名。这里可以根据需要修改
-keyalgRSA 指定算法
-keysize 指定算法加密后密钥长度
-keystorec:\\sdust.keystore保存路径及文件名
-validity3650证书有效期,单位为天
CN=你的ip,OU=cn,O=cn,L=cn,ST=cn,c=cn 基本信息的配置
CN=你的ip 这个配置务必注意
第四步:配置tomcat的server.xml文件[1]redirectPort端口号改为:443
[2]SSL HTTP/1.1 Connector定义的地方,修改端口号为:443
minSpareThreads="5" maxSpareThreads="75"
enableLookups="true" disableUploadTimeout="true"
acceptCount="100" maxThreads="200" SSLEnabled="true" scheme="https" secure="true"
keystoreFile="C:/sdust.keystore" keystorePass="123456"
clientAuth="false" sslProtocol="TLS" />
属性说明:clientAuth:设置是否双向验证,默认为false,设置为true代表双向验证keystoreFile:服务器证书文件路径keystorePass:服务器证书密码truststoreFile:用来验证客户端证书的根证书,此例中就是服务器证书truststorePass:根证书密码
[3] AJP 1.3 Connector定义的地方,修改redirectPort为443
第五步: 重新启动Tomcat就可以了。
附加内容:若要使得应用只能通过https的方式访问,在该项目的web.xml文件中加入如下代码:
CLIENT-CERTClient Cert Users-only AreaSSL/*CONFIDENTIALHTTPSOrHTTP*.ico/img/*/css/*NONE测试 :在浏览器中输入:https://localhost:8443/,会弹出选择客户端证书界面,点击“确定”,会进入tomcat主页,地址栏后会有“锁”图标,表示本次会话已经通过HTTPS双向验证,接下来的会话过程中所传输的信息都已经过SSL信息加密。
可能存在的问题:
Eclipse中启动tomcat7.0,本地tomcat配置文件被eclipse恢复。
问题是这样的,在eclipse的servers配置项里,将tomcat的启动配置为了use tomcat location,但是每次在eclipse里publish项目都会把本地G:\\tomcate7.0\\apache-tomcat-7.0.29\\conf下的配置文件(如:tomcat-user.xml添加了用户等信息)给重置,也就是里面添加的内容被清空了,回复到原来的样子:
问题解决方案:
你eclipse工程列表中应该 还有个 Servers 工程,下面会有Tomcat7的配置文件,你把里面的对应配置文件改了。每次是用这个文件来覆盖,tomcat下面的文件的。
特定的目录实现https访问
解决方案:
在web.xml文件中配置相应的路径
SSL/login.htmlCONFIDENTIAL
结束语:今天小编给大家带来的教程大家看懂了吗?keytool -help的作用就是,对电脑里的私密文件进行加密处理和加速处理,完全可以保证文件的安全性。更多独家内容就在课课家。
上一篇:电子邮件的整体认知
¥699.00
¥299.00
¥399.00
¥399.00