next up previous contents
Next: SQL Injection 注入 Up: XMPP 即時通訊伺服器 Prosody Previous: 用戶自行註冊   Contents

SSL 加密

  1. Prosody 0.9+ 提供 prosodyctl 命令可以產生憑證,其中 deyu.wang 是 server 設定的 doamin。
    prosodyctl cert generate deyu.wang
    
  2. 因 DYW Linux 安裝的 prosody 版本為 0.8.2-7.el6.x86_64,prosodyctl 命令並沒有提供此一功能。所以管理者必須使用 openssl 自行產生私鑰及憑證。
    [root@kvm8 ~]# openssl req -days 3650 -new -x509 -nodes \
    -out deyu.wang.crt -keyout deyu.wang.key \
    -subj '/C=TW/ST=Taiwan/L=CYUT/O=CSIE/CN=deyu.wang Certificate Authority'
    
  3. 把私鑰及憑證複製到 tls 預設的目錄中,當然管理者也可以放在自行設定的目錄,只要 server 中指定到該目錄即可。
    [root@kvm8 ~]# cp deyu.wang.key /etc/pki/tls/private/
    [root@kvm8 ~]# cp deyu.wang.crt /etc/pki/tls/certs/
    
  4. 變更私鑰及慼證權限為 600,並改變其擁有者及群組組為 prosody。
    [root@kvm8 ~]# chmod 600 /etc/pki/tls/certs/deyu.wang.crt 
    [root@kvm8 ~]# chmod 600 /etc/pki/tls/private/deyu.wang.key 
    
    [root@kvm8 ~]# chown prosody:prosody /etc/pki/tls/private/deyu.wang.key 
    [root@kvm8 ~]# chown prosody:prosody /etc/pki/tls/certs/deyu.wang.crt
    
  5. 開啟 client to server 必須加密的設定,安裝好 prosody 時,此參項是註解狀態,設定檔中說明預設是開啟,除非開啟它並設定為 false,但實際測試必須開啟並設定為 true 時,才會以加密方式通訊。
    [root@kvm8 ~]# grep ^c2s /etc/prosody/prosody.cfg.lua
    c2s_require_encryption = true
    
  6. 修改 server 設定檔,啟動 ssl 加密。
    VirtualHost "deyu.wang"
    	enabled = true -- Remove this line to enable this host
    
    	-- Assign this host a certificate for TLS, otherwise it would use the one
    	-- set in the global section (if any).
    	-- Note that old-style SSL on port 5223 only supports one certificate, and will always
    	-- use the global one.
    	ssl = {
    		key = "/etc/pki/tls/private/deyu.wang.key";
    		certificate = "/etc/pki/tls/certs/deyu.wang.crt";
    	}
    
  7. 重新啟動 prosody 服務。
    [root@kvm8 ~]# prosodyctl restart
    Stopped
    Started
    
  8. Client 端 pidgin 設定為必須加密。
    Image pidgin-ssl
  9. 接受伺服器 kvm8.deyu.wang SSL 認證。
    Image pidgin2
  10. 帳號 pregister1 與 Windows Spark 上的 puser2 上的加密通訊。
    Image pidgin-ssl1



2016-06-02