方式一:
用OPENSSL工具建立一个根证书,用它作签名生成对应证书。
1)修改CA的一些配置文件
vi
/etc/pki/tls/openssl.cnf
:
[ policy_match ]
countryName = match
stateOrProvinceName = optional
localityName = optional
organizationName = optional
organizationalUnitName = optional
commonName = supplied
emailAddress = optional
不用修改,看看即可,[ policy_match ]
中的设定的匹配规则,是有可能因为证书使用的工具不一样,导致即使设置了csr中看起来有相同的countryName,stateOrProvinceName等,但在最终生成证书时依然报错,就是证书和CA要匹配的规则。
2)生成根密钥
# cd /etc/pki/CA/
在CA目录下创建两个初始文件:# touch index.txt serial # echo 01 > serial
# openssl genrsa -out private/cakey.pem 2048
2)生成根证书
使用req命令生成自签证书:
# openssl req -new -x509
-days 36500 -key private/cakey.pem -out cacert.pem
会提示输入一些内容,因为是私有的,所以可以随便输入(之前修改的openssl.cnf会在这里呈现),最好记住能与后面保持一致。上面的自签证书cacert.pem
应该生成在/etc/pki/CA
下
3)为服务器生成可用证书
以上都是在CA服务器上做的操作,而且只需进行一次,现在转到nginx服务器上执行
# cd /etc/nginx/ssl
# openssl genrsa -out nginx.key 2048
4)为服务器证书生成签署请求
# openssl req -new -key nginx.key -out nginx.csr
...
Country Name (2 letter code) [AU]:CN
State or Province Name (full name) [Some-State]:GD
Locality Name (eg, city) []:SZ
Organization Name (eg, company) [Internet Widgits Pty Ltd]:COMPANY
Organizational Unit Name (eg, section) []:IT_SECTION
Common Name (e.g. server FQDN or YOUR name) []:your.domain.com
Email Address []:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
...
同样会提示输入一些内容,其它随便,除了Commone Name
一定要是你要授予证书的服务器域名或主机名,challenge password不填
5)用私有CA为服务器证书生成签名生成对应证书
接下来要把上一步生成的证书请求csr文件,发到CA服务器上,在CA上执行
openssl ca -in nginx.csr -days 3650 -out nginx.crt
另外在极少数情况下,上面的命令生成的证书不能识别,试试下面的命令: # openssl x509 -req -in nginx.csr -days 3650 -CA /etc/pki/CA/cacert.pem -CAkey /etc/pki/CA/private/cakey.pem -CAcreateserial -out server.crt
上面签发过程其实默认使用了-cert cacert.pem -keyfile cakey.pem
,这两个文件就是前两步生成的位于/etc/pki/CA
下的根密钥和根证书。将生成的crt证书发回nginx服务器使用。
到此我们已经拥有了建立ssl安全连接所需要的所有文件,并且服务器的crt和key都位于配置的目录下,剩下的是如何使用证书的问题。
6)为linux添加根证书
这一步不是必须的,一般出现在开发测试环境中,而且具体的应用程序应该提供添加证书的方法。
curl
工具可以在linux上模拟发送请求,但当它去访问https加密网站时就会提示如下信息:
# curl https://sean:sean@registry.domain.com:8000/
curl: (60) Peer certificate cannot be authenticated with known CA certificates
More details here: http://curl.haxx.se/docs/sslcerts.html
curl performs SSL certificate verification by default, using a "bundle"
of Certificate Authority (CA) public keys (CA certs). If the default
bundle file isn't adequate, you can specify an alternate file
using the --cacert option.
If this HTTPS server uses a certificate signed by a CA represented in
the bundle, the certificate verification probably failed due to a
problem with the certificate (it might be expired, or the name might
not match the domain name in the URL).
If you'd like to turn off curl's verification of the certificate, use
the -k (or --insecure) option.
提示上面的信息说明curl在linux的证书信任集里没有找到根证书,你可以使用curl --insecure
来不验证证书的可靠性,这只能保证数据是加密传输的但无法保证对方是我们要访问的服务。使用curl --cacert cacert.pem
可以手动指定根证书路径。我们也可以把根证书添加到系统(CentOS 5,6)默认的bundle:
# cp /etc/pki/tls/certs/ca-bundle.crt{,.bak} 备份以防出错
# cat /etc/pki/CA/cacert.pem >> /etc/pki/tls/certs/ca-bundle.crt
# curl https://sean:sean@registry.domain.com:8000
"docker-registry server (dev) (v0.8.1)"
7)nginx配置证书
在nginx配置文件(可能是/etc/nginx/sites-available/default
)的server指令下添加:
ssl on;
ssl_certificate /etc/nginx/ssl/nginx.crt;
ssl_certificate_key /etc/nginx/ssl/nginx.key;
同时注意 server_name 与证书申请时的 Common Name 要相同,打开443端口。当然关于web服务器加密还有其他配置内容,如只对部分URL加密,对URL重定向实现强制https访问,请参考其他资料。
8)tomcat配置证书
Tomcat currently operates only on JKS
, PKCS11
or PKCS12
format keystores
不支持直接配置证书,普通模式不支持。如果是APR模式则可用。
<!-- Define a SSL Coyote HTTP/1.1 Connector on port 8443 -->
<Connector
protocol="org.apache.coyote.http11.Http11AprProtocol"
port="8443" maxThreads="200"
scheme="https" secure="true" SSLEnabled="true"
SSLCertificateFile="/usr/local/ssl/server.crt"
SSLCertificateKeyFile="/usr/local/ssl/server.pem"
SSLVerifyClient="optional" SSLProtocol="TLSv1+TLSv1.1+TLSv1.2"/>
普通的NIO BIO模式,需先做转换对应的KEYSTORE
openssl pkcs12 -export -in server.crt -inkey nginx.key
-out mycert.p12 -name tomcat -CAfile cacrt.pem
-caname root -chain
<Connector port="8443" protocol="org.apache.coyote.http11.Http11Nio2Protocol"
SSLEnabled="true" maxHttpHeaderSize="8192" maxThreads="150" minSpareThreads="25"
enableLookups="false" disableUploadTimeout="true"
acceptCount="100" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="conf/mycert.p12" keystorePass="123456" keystoreType="PKCS12" />
完成。下一步把CA证书导入客户端浏览器就可以安全访问。
方式二:没试过
To obtain and install a Certificate from a Certificate Authority (like verisign.com, thawte.com or trustcenter.de), read the previous section and then follow these instructions:
Create a local Certificate Signing Request (CSR)
In order to obtain a Certificate from the Certificate Authority of your choice you have to create a so called Certificate Signing Request (CSR). That CSR will be used by the Certificate Authority to create a Certificate that will identify your website as "secure". To create a CSR follow these steps:
- Create a local self-signed Certificate (as described in the previous section):
keytool -genkey -alias tomcat -keyalg RSA -keystore <your_keystore_filename>
www.myside.org
) in the field "first- and lastname" in order to create a working Certificate. - The CSR is then created with:
keytool -certreq -keyalg RSA -alias tomcat -file certreq.csr -keystore <your_keystore_filename>
Now you have a file called certreq.csr
that you can submit to the Certificate Authority (look at the documentation of the Certificate Authority website on how to do this). In return you get a Certificate.
Importing the Certificate
Now that you have your Certificate you can import it into you local keystore. First of all you have to import a so called Chain Certificate or Root Certificate into your keystore. After that you can proceed with importing your Certificate.
- Download a Chain Certificate from the Certificate Authority you obtained the Certificate from.
For Verisign.com commercial certificates go to: http://www.verisign.com/support/install/intermediate.html
For Verisign.com trial certificates go to: http://www.verisign.com/support/verisign-intermediate-ca/Trial_Secure_Server_Root/index.html
For Trustcenter.de go to: http://www.trustcenter.de/certservices/cacerts/en/en.htm#server
For Thawte.com go to: http://www.thawte.com/certs/trustmap.html - Import the Chain Certificate into your keystore
keytool -import -alias root -keystore <your_keystore_filename> -trustcacerts -file <filename_of_the_chain_certificate>
- And finally import your new Certificate
keytool -import -alias tomcat -keystore <your_keystore_filename> -file <your_certificate_filename>
参考资料:
http://tomcat.apache.org/tomcat-8.0-doc/ssl-howto.html
https://segmentfault.com/a/1190000002569859
https://access.redhat.com/documentation/en-US/JBoss_Enterprise_Application_Platform/6.2/html/Administration_and_Configuration_Guide/Generate_a_SSL_Encryption_Key_and_Certificate.html
相关推荐
openSSL证书生成及Tomcat配置 本文将详细介绍openSSL证书生成和在Tomcat上的配置。首先,我们将学习openSSL的基本概念和命令,然后逐步生成服务器端和客户端的证书文件,并介绍如何使用CA证书签名这些证书文件。...
根据提供的文件信息,我们可以整理出有关HTTPS证书制作与配置的关键知识点。下面将详细介绍这些知识点,以便更好地理解HTTPS证书的工作原理及其在实际应用中的配置过程。 ### HTTPS证书制作及配置全记录 #### 一、...
关于Tomcat证书制作的知识点: 1. Keytool工具:Keytool是Java开发工具包(JDK)中提供的一个用于管理密钥和证书的工具。它可以帮助用户生成密钥库(keystore)文件,该文件用于存储密钥(key)和证书...
本文将详细介绍如何在Tomcat环境中启用HTTPS,并使用JDK自带的`keytool`工具制作自签名证书。 #### 二、HTTPS 原理简述 HTTPS 是 HTTP 协议的安全版本,它使用 SSL/TLS 协议来实现数据加密和身份验证功能。SSL/TLS...
1、讲解了HTTPS证书制作的全过程。 2、Tomat支持HTTPS证书所做的修改。 个人已验证,可用。
"HTTPS 制作证书" 在这篇文章中,我们将介绍如何使用 Java 的 keytool 工具生成安全证书,并将其应用于 Tomcat 服务器,以便实现 HTTPS 访问。 生成证书 在生成证书之前,需要先打开控制台,并进入 Tomcat 的 bin...
接下来,我们进入证书制作阶段。在指定目录下创建一个CA文件夹,用于存放证书相关文件。打开命令提示符并以管理员权限运行,执行一系列命令来创建根证书和私钥。例如,`openssl genrsa`用于生成私钥,`openssl req -...
ssl自制全套证书(包含服务器端、客户端、ca端的证书,格式有.crt,.key,.truststore,.keystore,.p12,.cer,.pem等类型),当时要配置webservice接口、tomca、nginx通过ssl访问的证书,弄了好久才生成了一套能使用的。...
生成自验证证书和在WebSphere上设置HTTPS是涉及到网络安全和服务器配置的重要知识点。这一过程不仅涉及到Java开发工具包(JDK)的使用,还需要对IBM WebSphere Application Server(WAS)进行相应的配置,以便通过...
4. 从Tomcat证书链中导出CA证书(CA.cer)。 5. 将华为的outgoing.Cert.pem和ca.pem导入Tomcat的信任证书链。 6. 配置Tomcat的双向认证。 最后,通过`openssl s_client`命令进行模拟建链,以验证配置是否成功。对于...
以下是关于`keytool`证书制作工具的详细知识: 1. **基本概念** - **密钥对**:密钥对由一对非对称密钥组成,包括一个公钥和一个私钥。公钥用于加密,私钥用于解密。 - **数字证书**:包含公钥及其拥有者信息的...
1、该文档执行的前提:windows、安装openssl工具、下载nginx服务器、安装jdk并配置环境变量 (压缩包 包括了openssl、nginx和相关的配置文件) 2、下载 openssl.cnf文件- 修改commonName、commonName_default、[alt_...
标题中的“keytool 加密证书制作”指的是使用Java自带的工具——keytool,来创建和管理数字证书。这个过程涉及到网络安全、加密技术和PKI(Public Key Infrastructure,公钥基础设施)等概念。 首先,理解keytool的...
首先,需要使用 JDK 自带的工具制作 HTTPS 证书。使用 keytool 命令生成证书 server.keystore。命令如下: ``` keytool –genkey -v -alias server -keyalg RSA -keystore D:\key\server.keystore -validity 3650 ``...
Java SSL证书制作工具,如Portecle,是用于创建、管理和查看数字证书的安全软件。SSL(Secure Sockets Layer)证书是网络安全的一种基础组件,广泛应用于网站加密,确保数据传输过程中的隐私性和完整性。Portecle...
Linux 下使用 OpenSSL 制作 CA 及证书颁发 Linux 下使用 OpenSSL 制作 CA 及证书颁发是一个重要的知识点,在软件开发领域中尤其重要。本文将指导读者如何使用 OpenSSL 在 Linux 平台上创建一个简单的证书颁发机构...
本文将详细介绍如何在内网环境中为Tomcat服务器配置HTTPS,确保数据传输的安全性。 #### 二、配置前准备 1. **软件需求**: - 已经安装了`OpenSSL`(例如:Win64OpenSSL_Light-1_1_1c.exe)。 - 已经安装了Java ...
### Rocky Linux下OpenSSL制作自签名CA证书应用 在当今高度数字化的世界中,网络安全变得尤为重要。其中,证书的使用是确保网络通信安全的关键之一。本文将详细介绍如何在Rocky Linux环境下利用OpenSSL工具来生成自...