導航:首頁 > IDC知識 > openssl伺服器證書

openssl伺服器證書

發布時間:2021-01-14 15:08:52

1、如何用Tomcat和Openssl構建HTTPS雙向認證環境

配置之前直接淘寶:Gworg,獲取公網信任證書。
配置Tomcat支持HTTPS雙向認證(伺服器將認證客戶端證書):
修改tomcat的conf目錄里的server.xml文件($TOMCAT_HOME/conf/server.xml),找到類似下面內容的配置處,添加配置如下:
<Connector port="8443(這個是HTTPS埠一般是443)"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" disableUploadTimeout="true"
acceptCount="100" debug="0" scheme="https" secure="true"
clientAuth="true" sslProtocol="TLS"
keystoreFile="conf/tomcat.jks(這個是證書文件)" keystorePass="密碼" keystoreType="JKS"
truststoreFile="conf/truststore.jks(這個是證書文件)" truststorePass="密碼" truststoreType="JKS" />

(題外話:其實HTTPS單向和雙向認證配置的唯一區別是,把clientAuth改為false,去掉truststore的相關配置,就是單向HTTPS認證了,單向HTTPS用的可能更多,它主要在瀏覽器與f伺服器交互的HTTP需要加密,而不需要驗證客戶端證書時使用。)

經以上配置後,重啟tomcat,伺服器就支持HTTPS雙向認證了。

2、如何使用openssl生成證書

Step 1. Create key (password protected)

openssl genrsa -out prvtkey.pem 1024/2038 (with out password protected)

openssl genrsa -des3 -out prvtkey.pem 1024/2048 (password protected)

這個命令會生成一個1024/2048位的密鑰。
Step 2. Create certification request

openssl req -new -key prvtkey.pem -out cert.csr

openssl req -new -nodes -key prvtkey.pem -out cert.csr

這個命令將會生成一個證書請求,當然,用到了前面生成的密鑰prvtkey.pem文件
這里將生成一個新的文件cert.csr,即一個證書請求文件,你可以拿著這個文件去數字證書頒發機構(即CA)申請一個數字證書。CA會給你一個新的文件cacert.pem,那才是你的數字證書。

Step 3: Send certificate request to Certification Authority (CA)

如果是自己做測試,那麼證書的申請機構和頒發機構都是自己。就可以用下面這個命令來生成證書:
openssl req -new -x509 -key prvtkey.pem -out cacert.pem -days 1095
這個命令將用上面生成的密鑰privkey.pem生成一個數字證書cacert.pem

cacert.pem 生成過程見「OpenSSL建立自己的CA」

有了privkey.pem和cacert.pem文件後就可以在自己的程序中使用了,比如做一個加密通訊的伺服器

-------------
OpenSSL建立自己的CA

(1) 環境准備

首先,需要准備一個目錄放置CA文件,包括頒發的證書和CRL(Certificate Revoke List)。
這里我們選擇目錄 /var/MyCA。

然後我們在/var/MyCA下建立兩個目錄,certs用來保存我們的CA頒發的所有的證書的副本;private用來保存CA證書的私鑰匙。

除了生成鑰匙,在我們的CA體系中還需要創建三個文件。第一個文件用來跟蹤最後一次頒發的證書的序列號,我們把它命名為serial,初始化為01。第二個文件是一個排序資料庫,用來跟蹤已經頒發的證書。我們把它命名為index.txt,文件內容為空。

$ mkdir /var/MyCA
$ cd /var/MyCA
$ mkdir certs private
$ chmod g-rwx,o-rwx private
$ echo "01" > serial
$ touch index.txt

第三個文件是OpenSSL的配置文件,創建起來要棘手點。示例如下:

$ touch openssl.cnf

文件內容如下:

[ ca ]
default_ca = myca

[ myca ]
dir = /var/MyCA
certificate = $dir/cacert.pem
database = $dir/index.txt
new_certs_dir = $dir/certs
private_key = $dir/private/cakey.pem
serial = $dir/serial

default_crl_days= 7
default_days = 365
default_md = md5

policy = myca_policy
x509_extensions = certificate_extensions

[ myca_policy ]
commonName = supplied
stateOrProvinceName = supplied
countryName = supplied
emailAddress = supplied
organizationName= supplied
organizationalUnitName = optional

[ certificate_extensions ]
basicConstraints= CA:false

我們需要告訴OpenSSL配置文件的路徑,有兩種方法可以達成目的:通過config命令選項;通過環境變數OPENSSL_CONF。這里我們選擇環境變數的方式。

$ OPENSSL_CONF=/var/MyCA/openssl.cnf"
$ export OPENSSL_CONF

(2) 生成根證書 (Root Certificate)

我們需要一個證書來為自己頒發的證書簽名,這個證書可從其他CA獲取,或者是自簽名的根證書。這里我們生成一個自簽名的根證書。

首先我們需要往配置文件裡面添加一些信息,如下所示,節名和命令行工具的命令req一樣。我們把所有必要的信息都寫進配置,而不是在命令行輸入,這是唯一指定X.509v3擴展的方式,也能讓我們對如何創建根證書有個清晰的把握。

[ req ]
default_bits = 2048
default_keyfile = /var/MyCA/private/cakey.pem
default_md = md5
prompt = no
distinguished_name = root_ca_distinguished_name
x509_extensions = root_ca_extensions
[ root_ca_distinguished_name ]
commonName = My Test CA
stateOrProvinceName = HZ
countryName = CN
emailAddress = [email protected]
organizationName = Root Certification Authority
[ root_ca_extensions ]
basicConstraints = CA:true

萬事俱備,我們可以生成根證書了。注意設置好環境變數OPENSSL_CONF。

$ openssl req -x509 -newkey rsa -out cacert.pem -outform PEM -days 356

註:「-days 356「控制有效期限為365天,默認為30天。

驗證一下我們生成的文件。

$ openssl x509 -in cacert.pem -text -noout

(3) 給客戶頒發證書

在給客戶頒發證書之前,需要客戶提供證書的基本信息。我們另外開啟一個終端窗口,使用默認的OpenSSL配置文件(不要讓之前的OPENSSL_CONF干擾我們,那個配置是專門用來生成根證書的)。

命令和我們生成根證書的類似,都是req,不過需要提供一些額外的信息。如下:

$ openssl req -newkey rsa:1024 -keyout testkey.pem -keyform PEM -out testreq.pem -outform PEM

有兩次提示要口令,第一次的口令用來加密私鑰匙testkey.pem,第二次口令一般被OpenSSL忽略。
結果生成兩個文件:testkey.pem,私鑰匙;testreq.pem,請求信息,其中包括公鑰匙。

我們來看看testreq.pem都有哪些信息?

$ openssl req -in testreq.pem -text -noout

現在,我們可以把testreq.pem提交給我們的CA生成證書了。
為了方便起見,我們假定testreq.pem在//var/MyCA/private/中。

$ openssl ca -in testreq.pem

有三次提示,一次是問你CA的私鑰匙密碼,兩次是確認,輸出的結果就是為客戶頒發的證書。
可以通過batch選項取消命令提示,可通過notext選項取消證書的輸出顯示。
此外,還可以一次給多個客戶頒發證書,方法是用 infiles選項替換in選項,不過這個選項必須放在最後,因為此後的任何字元均被處理為文件名稱列表。

生成的證書放在certs目錄,同時index.txt和serial的內容都發生了改變。
publicdoubleside=10.0;//去掉static

3、如何生成openssl證書

2. 生成Root CA私鑰與證書:
2.1 先生成RootCA私鑰--》使用私鑰生成CSR--》生成自簽名根證書。用來給二級CA證書簽名。
3. 生成二級CA 私鑰與證書:(假如有兩個二級CA, 分別負責管理伺服器端和客戶端證書)
3.1 先生成ServerCA私鑰--》使用私鑰生成CSR--》使用根證書簽名生成二級證書。用來給伺服器證書簽名。
3.2 先生成ClientCA私鑰--》使用私鑰生成CSR--》使用根證書簽名生成二級證書。用來給客戶端證書簽名。
4. 生成伺服器端與客戶端的私鑰與證書:
4.1 先生成ServerA私鑰--》使用私鑰生成CSR--》使用ServerCA證書簽名生成三級證書。
4.2 先生成ClientA私鑰--》使用私鑰生成CSR--》使用ClientCA證書簽名生成三級證書。
4.3 先生成ClientB私鑰--》使用私鑰生成CSR--》使用ClientCA證書簽名生成三級證書
。。。。可以生成N個客戶端證書證書結構:RootCA||-------ServerCA| || |--------ServerA||-------ClientCA||--------ClientA||--------ClientB||--------...|
5. 導出RootCA的根證書、伺服器端和客戶端的私鑰和證書。
導出時都使用pem格式。
RootCA.pem-------根證書(PEM )
ServerA.pem------伺服器端證書(PEM with Certificate chain)
ClientA.pem------客戶端證書(PEM with Certificate chain)
ClientB.pem------客戶端證書(PEM with Certificate chain)
ServerAKey.pem------伺服器端私鑰(PEM )
ClientAKey.pem------客戶端私鑰(PEM )
ClientBKey.pem------客戶端私鑰(PEM )
6.下面是最重要的一步:生成需要使用的JKS文件。keytool工具不能導入私鑰,需要利用到weblogic 提供的一個工具,需要把weblogic.jar加到CLASSPATH。
6.1 生成伺服器和客戶端的信任證書庫:
keytool -import -alias rootca -file RootCA.pem -keystore trust.jks
6.2 生成伺服器端身份密鑰庫:
java utils.ImportPrivateKey -keystore servera.jks -storepass 123456 -storetype JKS -keypass 123456 -alias servera -certfile ServerA.pem -keyfile ServerAKey.pem
6.3 生成客戶端身份密鑰庫:
java utils.ImportPrivateKey -keystore clienta.jks -storepass 123456 -storetype JKS -keypass 123456 -alias clienta -certfile ClientA.pem -keyfile ClientAKey.pem ...生成其他客戶端身份密鑰庫
7. keytool -list -v -keystore clienta.jks (servera.jks) 可以查看其中的證書鏈關系。

4、openssl訪問https,怎麼獲取證書

1、獲取來SSL證書,准備域自名。
2、淘寶:Gworg 獲取HTTPS證書。
3、拿到證書後,根據伺服器環境安裝。
4、APACHE安裝SSL證書:網頁鏈接
5、Nginx安裝SSL證書:網頁鏈接
6、如果看不到安裝教程,直接叫Gworg代理安裝。

5、Linux CentOS 怎麼使用openssl 向windows server CA證書伺服器申請web證書。求詳細過程。

1、.key和.cer可以合並成pfx或p12文件
2、例如
openssl pkcs12 -export -clcerts -in a.cer -inkey a.key -out a.p12

6、openssl 自簽名證書怎麽配置到windows server 2008 r2 tomcat伺服器上

用php的openssl_x509_parse函數解析copy用戶證書user.cer和根證書server.cer ,在比較用戶證書與根證書的頒發機構等信息,如果是相同的則說明用戶證書是根證書頒發,即為合法證書,反之則不合法

7、openssl生成證書需要mac地址嗎

需要CA給Web伺服器辦法一個伺服器證書,Web伺服器配置一下SSL認證模式。 選擇雙認證,客戶的使用該CA辦法的簽名認證證書,使用HTTPS登錄即可。

8、如何利用openssl為iis生成ssl伺服器證書

2.在要安加SSL服務的網站,右鍵打開網站屬性Table. 3.選取目錄安全中的伺服器證書. 4.進入生成伺服器證書請求的步驟中,一步步填寫相應的信息。每一步相應的信息要記住,這些信息在後面要用到。二、openssl操作: 1.生成私鑰。 openssl genrsa -des3 -out cakey.pem 2048 2.生成自簽名根證書. openssl req -new -x509 -key cakey.pem -out cacert.pem -days 1825
此處會要求輸入一些信息: Country Name: CN //兩個字母的國家代號 State or Province Name: guang dong //省份名稱 Locality Name: guang zhou //城市名稱 Organization Name: sunrising //公司名稱
Organizational Unit Name: home //部門名稱 Common Name: besunny //你的姓名(要是生成伺服器端的證書一定要輸入域名或者ip地址) 切記一定要和IIS伺服器上填寫的信息保持一致。 3.在你的openssl主目錄下的bin目錄下創建如下目錄: demoCA
demoCA/newcerts 在demoCA目錄下創建一個空的index.txt文件. 在demoCA目錄創建一個serial文件,文件內容為01 . 4.把第二步的生成的cakey.pem拷貝到 demoCA/private目錄下; 把cacert.pem 拷貝到demoCA目錄下. 5.用CA證書cacert.pem為IIS請求certreq.txt簽發證書。(將iis伺服器生成的certreq.txt存放在openssl/bin下面) openssl ca -in certreq.txt -out iis.cer 6.打開iis.cer,刪掉在"-- Begin Certificate --"的文本。 三.IIS伺服器操作: 在該網站屬性中目錄安全的伺服器證書 ,導入該證書。 四、測試是否SSL正常。 二、配置OpenSSL1、建立自己的CA證書在openssl的apps目錄下建立自己的CA證書,例如mageCAC:/openssl098b/apps>mkdir mageCA2、生成CA密鑰C:/openssl098b/apps>openssl genrsa -out mageCA/ca-key.pem 1024Genrsa[產生密鑰命令] –out[密鑰文件輸出路徑] 1024[密鑰位數]Loading 'screen' into random state - doneGenerating RSA private key, 1024 bit long molus..............................++++++......++++++3、生成待簽名的證書C:/openssl098b/apps>openssl req -new -out mageCA/ca-req.csr -key mageCA/ca-key.pemreq[產生證書命令]-new[新生成]-out[證書文件輸出路徑]-key[私鑰文件路徑]報錯:Using configuration from /usr/local/ssl/openssl.cnfUnable to load config infounable to find 'distinguished_name' in configproblems making Certificate Request2188:error:0E06D06A:configurationfileroutines:NCONF_get_string:no conf or environment variable:./crypto/conf/conf_lib.c:344:2188:error:0E06D06A:configurationfileroutines:NCONF_get_string:no conf or environment variable:./crypto/conf/conf_lib.c:344:2188:error:0E06D06A:configurationfileroutines:NCONF_get_string:no conf or environment variable:./crypto/conf/conf_lib.c:344:2188:error:0E06D06A:configurationfileroutines:NCONF_get_string:no conf or environment variable:./crypto/conf/conf_lib.c:344:2188:error:0E06D06A:configurationfileroutines:NCONF_get_string:no conf or environment variable:./crypto/conf/conf_lib.c:344:2188:error:0E06D06A:configurationfileroutines:NCONF_get_string:no conf or environment variable:./crypto/conf/conf_lib.c:344:2188:error:0E06D06A:configurationfileroutines:NCONF_get_string:no conf or environment variable:./crypto/conf/conf_lib.c:344:2188:error:0E06D06A:configurationfileroutines:NCONF_get_string:no conf or environment variable:./crypto/conf/conf_lib.c:344:出現這樣的問題後,打開了apps下的req查看DIAGNOSTICS: =head1 DIAGNOSTICSThe following messages are frequently asked about:? Using configuration from /some/path/openssl.cnf? Unable to load config infoThis is followed some time later by...? unable to find 'distinguished_name' in config? problems making Certificate RequestThe first error message is the clue: it can't find the configurationfile! Certain operations (like examining a certificate request) don'tneed a configurationfile so its use isn't enforced. Generation ofcertificates or requests however does need a configurationfile. Thiscould be regarded as a bug.依然不能解決問題,在網上搜索,被告知是環境變數沒有設置,於是設置系統用戶變數OPENSSL_CONF為C:/openssl098b/apps/openssl_cnf。重開一個命令行窗口,要求輸入一系列的信息,如國家、省、市、公司、部門、姓名、電子郵件等,命令執行完成。在設置了環境變數以後,一定要另開一個命令行窗口!一開始我就是沒有另開窗口,所以後來又耽誤了好多時間,不過,真是因為這個錯誤,我才搞清楚了openssl_cnf!至於openssl_cnf,笨笨的我還在apps下找了好半天,都沒有找到這個文件,後來被高手告知就是那個名為openssl的計算機圖標一樣的文件,是可以用寫字板打開的!狂暈!還有人說是在ssl目錄下,但是我的不是!

9、openssl怎樣創建個人證書

一:生成證書
目前不使用第三方權威機構的CA來認證,自己充當CA的角色。
網上下載一個openssl軟體
1. 創建私鑰 :
C:/OpenSSL/bin>openssl genrsa -out ca/ca-key.pem 1024
2.創建證書請求 :
C:/OpenSSL/bin>openssl req -new -out ca/ca-req.csr -key ca/ca-key.pem
-----
Country Name (2 letter code) [AU]:cn
State or Province Name (full name) [Some-State]:zhejiang
Locality Name (eg, city) []:hangzhou
Organization Name (eg, company) [Internet Widgits Pty Ltd]:skyvision
Organizational Unit Name (eg, section) []:test
Common Name (eg, YOUR name) []:root
Email Address []:sky
3.自簽署證書 :
C:/OpenSSL/bin>openssl x509 -req -in ca/ca-req.csr -out ca/ca-cert.pem -signkey ca/ca-key.pem -days 3650
4.將證書導出成瀏覽器支持的.p12格式 : (不需要可以省略)
C:/OpenSSL/bin>openssl pkcs12 -export -clcerts -in ca/ca-cert.pem -inkey ca/ca-key.pem -out ca/ca.p12
密碼:changeit
二.生成server證書。
1.創建私鑰 :
C:/OpenSSL/bin>openssl genrsa -out server/server-key.pem 1024
2.創建證書請求 :
C:/OpenSSL/bin>openssl req -new -out server/server-req.csr -key server/server-key.pem
-----
Country Name (2 letter code) [AU]:cn
State or Province Name (full name) [Some-State]:zhejiang
Locality Name (eg, city) []:hangzhou
Organization Name (eg, company) [Internet Widgits Pty Ltd]:skyvision
Organizational Unit Name (eg, section) []:test
Common Name (eg, YOUR name) []:192.168.1.246 注釋:一定要寫伺服器所在的ip地址
Email Address []:sky
3.自簽署證書 :
C:/OpenSSL/bin>openssl x509 -req -in server/server-req.csr -out server/server-cert.pem -signkey server/server-key.pem -CA ca/ca-cert.pem -CAkey ca/ca-key.pem -CAcreateserial -days 3650
4.將證書導出成瀏覽器支持的.p12格式 :
C:/OpenSSL/bin>openssl pkcs12 -export -clcerts -in server/server-cert.pem -inkey server/server-key.pem -out server/server.p12
密碼:changeit
三.生成client證書。
1.創建私鑰 :
C:/OpenSSL/bin>openssl genrsa -out client/client-key.pem 1024
2009-7-17 22:32 回復
yakeqin
1位粉絲
2樓
2.創建證書請求 :
C:/OpenSSL/bin>openssl req -new -out client/client-req.csr -key client/client-key.pem
-----
Country Name (2 letter code) [AU]:cn
State or Province Name (full name) [Some-State]:zhejiang
Locality Name (eg, city) []:hangzhou
Organization Name (eg, company) [Internet Widgits Pty Ltd]:skyvision
Organizational Unit Name (eg, section) []:test
Common Name (eg, YOUR name) []:sky
Email Address []:sky 注釋:就是登入中心的用戶(本來用戶名應該是Common Name,但是中山公安的不知道為什麼使用的Email Address,其他版本沒有測試)
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:123456
An optional company name []:tsing
3.自簽署證書 :
C:/OpenSSL/bin>openssl x509 -req -in client/client-req.csr -out client/client-cert.pem -signkey client/client-key.pem -CA ca/ca-cert.pem -CAkey ca/ca-key.pem -CAcreateserial -days 3650
4.將證書導出成瀏覽器支持的.p12格式 :
C:/OpenSSL/bin>openssl pkcs12 -export -clcerts -in client/client-cert.pem -inkey client/client-key.pem -out client/client.p12
密碼:changeit
四.根據ca證書生成jks文件
C:/Java/jdk1.5.0_09/bin > keytool -keystore C:/openssl/bin/jks/truststore.jks -keypass 222222 -storepass 222222 -alias ca -import -trustcacerts -file C:/openssl/bin/ca/ca-cert.pem
五.配置tomcat ssl
修改conf/server.xml。tomcat6中多了SSLEnabled="true"屬性。keystorefile, truststorefile設置為你正確的相關路徑
xml 代碼
tomcat 5.5的配置:
<Connector port="8443" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" disableUploadTimeout="true"
acceptCount="100" scheme="https" secure="true"
clientAuth="true" sslProtocol="TLS"
keystoreFile="server.p12" keystorePass="changeit" keystoreType="PKCS12"
truststoreFile="truststore.jks" truststorePass="222222" truststoreType="JKS" />
tomcat6.0的配置:
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="true" sslProtocol="TLS"
keystoreFile="server.p12" keystorePass="changeit" keystoreType="PKCS12"
truststoreFile="truststore.jks" truststorePass="222222" truststoreType="JKS"/>
六.導入證書
將ca.p12,client.p12分別導入到IE中去(打開IE->;Internet選項->內容->證書)。
ca.p12導入至受信任的根證書頒發機構,client.p12導入至個人
七.驗證ssl配置是否正確訪問你的應用http://ip:8443/,如果配置正確的話會出現請求你數字證書的對話框。

10、openssl證書生成工具如何生成證書鏈

2. 生成Root CA私鑰與證書:2.1 先生成RootCA私鑰--》使用私鑰生成CSR--》生成自簽名根證書。用來給二級CA證書簽名。3. 生成二級CA 私鑰與證書:(假如有兩個二級CA, 分別負責管理伺服器端和客戶端證書)3.1 先生成ServerCA私鑰--》使用私鑰生成CSR--》使用根證書簽名生成二級證書。用來給伺服器證書簽名。3.2 先生成ClientCA私鑰--》使用私鑰生成CSR--》使用根證書簽名生成二級證書。用來給客戶端證書簽名。4. 生成伺服器端與客戶端的私鑰與證書:4.1 先生成ServerA私鑰--》使用私鑰生成CSR--》使用ServerCA證書簽名生成三級證書。4.2 先生成ClientA私鑰--》使用私鑰生成CSR--》使用ClientCA證書簽名生成三級證書。4.3 先生成ClientB私鑰--》使用私鑰生成CSR--》使用ClientCA證書簽名生成三級證書。。。。可以生成N個客戶端證書證書結構:RootCA||-------ServerCA| || |--------ServerA||-------ClientCA||--------ClientA||--------ClientB||--------...|5. 導出RootCA的根證書、伺服器端和客戶端的私鑰和證書。導出時都使用pem格式。RootCA.pem-------根證書(PEM )ServerA.pem------伺服器端證書(PEM with Certificate chain)ClientA.pem------客戶端證書(PEM with Certificate chain)ClientB.pem------客戶端證書(PEM with Certificate chain)ServerAKey.pem------伺服器端私鑰(PEM )ClientAKey.pem------客戶端私鑰(PEM )ClientBKey.pem------客戶端私鑰(PEM )6.下面是最重要的一步:生成需要使用的JKS文件。keytool工具不能導入私鑰,需要利用到weblogic 提供的一個工具,需要把weblogic.jar加到CLASSPATH。6.1 生成伺服器和客戶端的信任證書庫:keytool -import -alias rootca -file RootCA.pem -keystore trust.jks6.2 生成伺服器端身份密鑰庫:java utils.ImportPrivateKey -keystore servera.jks -storepass 123456 -storetype JKS -keypass 123456 -alias servera -certfile ServerA.pem -keyfile ServerAKey.pem6.3 生成客戶端身份密鑰庫:java utils.ImportPrivateKey -keystore clienta.jks -storepass 123456 -storetype JKS -keypass 123456 -alias clienta -certfile ClientA.pem -keyfile ClientAKey.pem ...生成其他客戶端身份密鑰庫7. keytool -list -v -keystore clienta.jks (servera.jks) 可以查看其中的證書鏈關系。

與openssl伺服器證書相關的知識