1. 程式人生 > >jetty 6.x https訪問雙向認證配置方法

jetty 6.x https訪問雙向認證配置方法

打算給新開發的應用做https方式訪問,採用雙向認證的方式(即客戶端需要校驗伺服器端證書,伺服器端也需要校驗客戶端證書),在網上找了半天,都是東一句西一句的,沒有一個比較全的,經過一番周折,終於搭起來了。講講主要的思路:

  1. 先給伺服器端與客戶端發證書(我用的是openssl)
  2. 建立伺服器端的keystore,裡面包含伺服器端個人證書(帶私鑰)和可信任的CA根證書與客戶端證書。
  3. 配置jetty.xml,設定https引數,包括埠號,keystore庫位置,truststore庫位置,口令,和雙向認證方式。

1、用openssl發證

#在當前目錄下建立openssl.cnf配置檔案,可從openssl安裝目錄下拷貝一份,主要修改string_mask,從nombstr改為utf8only

string_mask = utf8only

#建立根證書私鑰
openssl genrsa -des3 -out cakey.pem -passout pass:12345678 1024

#建立自簽名的根證書
openssl req -utf8 -new -x509 -days 7300 -key cakey.pem -passin pass:12345678 -out cacert.crt -config openssl.cnf -set_serial 1 -subj "/CN=XX證書中心/OU=XX證書中心/O=XXXX公司"

#建立伺服器的私鑰
#openssl genrsa -des3 -out server.key 1024

#建立伺服器的待簽證書
openssl req -utf8 -new -key server.key -days 7300 -out server.csr -passin pass:12345678 -passout pass:12345678 -subj /CN=localhost/OU=XX證書中心/O=XXXX公司

#簽發伺服器證書(pem格式)
openssl ca -utf8 -config openssl.cnf -passin pass:12345678 -batch -in server.csr -out server.crt

#生成帶私鑰的pkcs12格式伺服器證書
openssl pkcs12 -export -inkey server.key -in server.crt -out server.pfx -passin pass:12345678 -passout pass:12345678


#轉換pem(base64)編碼格式的伺服器證書為der(二進位制)編碼格式
openssl x509 -in server.crt -inform pem -out server.der -outform der

#客戶端證書生成依照伺服器生成步驟再做一遍(注意,根證書不需要再次生成)。

2、匯入證書到keystore中

#匯入伺服器個人證書(帶私鑰)到keystore中
keytool -importkeystore -srckeystore server.pfx -srcstoretype PKCS12 -keystore server.jks -srcstorepass 12345678 -deststorepass 12345678

#匯入ca根證書和客戶端證書到可信任證書鏈中
keytool -import -keystore server.jks -keypass 12345678 -storepass 12345678 -alias ca -trustcacerts -file cacert.crt
keytool -import -keystore server.jks -keypass 12345678 -storepass 12345678 -alias client -trustcacerts -file client.der

3、jetty.xml的配置(精簡型,只執行一個應用,執行緒數也設定的很少)

<?xml version="1.0"?>
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd">

<Configure id="Server" class="org.mortbay.jetty.Server">
  <Set name="ThreadPool">
    <New class="org.mortbay.thread.BoundedThreadPool">
      <Set name="minThreads">1</Set>
      <Set name="maxThreads">5</Set>
    </New>
  </Set>

  <Call name="addConnector">
    <Arg>
      <New class="org.mortbay.jetty.security.SslSelectChannelConnector">
        <Set name="Port"><SystemProperty name="jetty.port" default="8443"/></Set>
        <Set name="maxIdleTime">30000</Set>
        <Set name="Acceptors">1</Set>
        <Set name="AcceptQueueSize">100</Set> 
        <Set name="keystore"><SystemProperty name="jetty.home" default="." />/etc/server.jks</Set>
        <Set name="password">12345678</Set>
        <Set name="keyPassword">password</Set>
        <Set name="truststore"><SystemProperty name="jetty.home" default="." />/etc/server.jks</Set>
        <Set name="trustPassword">12345678</Set>
        <Set name="needClientAuth">true</Set>
      </New>
    </Arg>
  </Call>

  <Set name="handler">
    <New id="Handlers" class="org.mortbay.jetty.handler.HandlerCollection">
      <Set name="handlers">
        <Array type="org.mortbay.jetty.Handler">
          <Item>
            <New class="org.mortbay.jetty.webapp.WebAppContext">
              <Set name="contextPath">/</Set>
              <Set name="resourceBase">webapp/</Set>
              <Call name="addServlet">
                <Arg>org.mortbay.jetty.servlet.DefaultServlet</Arg>
                <Arg>/</Arg>
              </Call>
            </New>
          </Item>
        </Array>
      </Set>
    </New>
  </Set>
</Configure>

配置好後,執行jetty,可在控制檯視窗輸出中看到啟動資訊。

4、瀏覽器中匯入根證書cacert.crt和客戶端證書client.pfx,然後訪問

http://localhost:8443/

相關推薦

jetty 6.x https訪問雙向認證配置方法

打算給新開發的應用做https方式訪問,採用雙向認證的方式(即客戶端需要校驗伺服器端證書,伺服器端也需要校驗客戶端證書),在網上找了半天,都是東一句西一句的,沒有一個比較全的,經過一番周折,終於搭起來了。講講主要的思路: 先給伺服器端與客戶端發證書(我用的是openssl)

centos 6.x 下oracle 11g 安裝配置 [簡單記錄]

      以前都是用oracle 10g 現在也順便用用11g 順便就帖上安裝過程,簡單記錄一下,做一個存檔。             一、   安裝資料庫軟體 1.         建立oracle使用者 groupadd oinstall  groupad

Redhat 6.0中VNC Server的配置方法

關於在Linux系統中配置VNC Server的方法,網上有很多的教程或者文章,但應用在我們的環境中時都不能完整解決我們的問題,所以這裡我將在Redhat 6.0中配置VNC Server中的方法,以及可能遇到問題的解決辦法總結在這裡,供大家參考。 1、 查詢系統是否安裝v

Centos 6.x下擴充套件swap分割槽簡單方法

使用檔案簡單擴充套件swap分割槽。 1.進入根分割槽 cd / 2.建立一個用來當作swap分割槽的檔案 dd if=/dev/zero of=/swapfile bs=1M count=1024 會建立一個1G的swapfile檔案 3.格式化swapfile

ssh登入使用radius伺服器認證配置方法

環境: 1、linux伺服器:用於ssh登入,同時做為radius客戶端。     CentOS5     IP:10.0.1.1 2、Radius伺服器:用於radius客戶端,同時做為域成員(加入AD域)     windows 2003加入域並啟用internet驗證

Https、OpenSSL自建CA證書及簽發證書、nginx單向認證雙向認證及使用Java訪問

1.5 image echo create etc 保存 config openss ima 0.環境 安裝了nginx,安裝了openssl 1.配置和腳本 先創建一個demo目錄(位置自己選擇,我選擇建在nginx的目錄下): mkdir /etc/nginx/

(xampp)lampp 下配置https(ssl)自簽雙向認證以後 apache無法啟動解決方案

art blog xtra 場景 問題 .com 客戶端瀏覽器 php https 自簽CA一般是沒有應用場景的,因為需要客戶端瀏覽器導入證書才能訪問 但是在某些需要內部使用的場景下,確實是一個解決方案 但是在lampp配置了雙向認證以後發現 原來自帶的管理命令 lampp

Tomcat伺服器配置https雙向認證

一,HTTPS原理 1,HTTP、HTTPS、SSL、TLS介紹與相互關係 (1) HTTP:平時瀏覽網頁時候使用的一種協議。HTTP協議傳輸的資料都是未加密的(明文),因此使用HTTP協議傳輸隱私資訊非常不安全。 (2)

Https雙向認證Android客戶端配置

Https雙向認證啊  做了兩遍,第一遍懵懂狀態處於 好不容易做好了,換伺服器,一下子懵了,使出渾身解數又找了一遍,這下終於好了  快哭啦,必須滴要記錄一下,以免以後遇到繼續懵,這裡用retrofit2+okhttp3為例子來簡單說明下 先來說說證書: 服務端提供的證書有四

nginx配置將http請求轉發支援ssl雙向認證https請求的正向代理

一、引言 nginx 是否支援將http請求轉發為https支援ssl雙向認證,網上沒什麼用例可以參考,查詢各大開發運維社群了下有幾種說法 支援: 不支援: 不清楚家祭不忘告乃翁:

Apache下配置https雙向認證

1.Apache安裝並開啟ssl 略 2.建立證書 建立證書的步驟如下 2.1建立相關目錄 這裡apache目錄位於/data/webapps/apache 在apache目錄下建立ca目錄(方便管理,可自定義) mkdi

spring boot配置Https單向認證雙向認證

Spring boot SSL配置部分文件:   這裡將server.pfx、trustore.p12拷貝到了src/main/resources/路徑下 單向認證: server.port: 8443 server.ssl.key-store: src/

tomcat8配置https雙向認證

工具準備:keytool(JDK自帶證書生成工具),tomcat8 利用JDK中keyStore生成證書。 前言: 關於HTTPS介紹文章請看此博文,我也是看了他的博文才搞懂的,真心感謝。 博文地址:http://www.cnblogs.com/JeffreySun/ar

SSL--用Tomcat伺服器配置https雙向認證過程實戰

什麼是https? 百度百科足夠解釋它:http://baike.baidu.com/view/14121.htm 概述 A、 什麼是HTTPS在說HTTPS之前先說說什麼是HTTP,HTTP就是我們平時瀏覽網頁時候使用的一種協議。HTTP協議傳輸的資料都是未加密的,

linux 配置nginx https 訪問認證

1   首先檢視伺服器有沒有安裝openssl 支援包,           rpm -qa | grep  openssl  如果有結果輸出,說明已經有了openssl 包的支援 如果沒有結果輸入 通過命令  yum instance -y openssl       

用Tomcat伺服器配置https雙向認證過程實戰

什麼是https? 百度百科足夠解釋它:http://baike.baidu.com/view/14121.htm工具:keytool (Windows下路徑:%JAVA_HOME%/bin/keytool.exe)環境:Windows8.1企業版、Tomcat-7.0.2

HTTPS雙向認證+USB硬體加密鎖(加密狗)配置

環境:  Ubuntu14.04,apache2.4.7, openssl1.0.1f 安裝apache2 apt-get install apache2 -y 一般openssl預設已經安裝 開啟apache的ssl模組和ssl站點 a2enmod ssl a2ensi

Tomcat配置https與http自動跳轉和tomcat單雙向SSL配置及IE訪問HTTPS下載檔案失敗

Tomcat配置https與http自動跳轉 https介紹:    HTTPS(全稱:Hypertext Transfer Protocol over Secure Socket Layer),是以安全為目標 的HTTP通道,簡單講是HTTP的安全版。即HTTP下加入SS

CentOS 6.x 本地yum源配置與使用

mnt local 放置 cal nbsp 自動 all rpm-gpg 網絡 系統默認已經安裝了可使用yum的軟件包,所以可以直接配置: # mount /dev/cdrom /mnt 掛載鏡像,可以寫到配

配置CentOS 6.x

enable gcc -- https download sco config all pytho 如你所知,CentOS官方倉庫的軟件包通常版本都比較舊,為了使用較新版本要花一些信息在配置上。 SVN 1.9: http://opensource.wandisc