1. 程式人生 > >使用stunnel雙向證書認證加密samba的資料傳輸

使用stunnel雙向證書認證加密samba的資料傳輸

服務端ubuntu server 14.04

客戶端windows 7

服務端ubuntu

以下在ubuntu server上操作

samba的設定

在配置檔案中限制只服務內網介面和lo

interfaces = eth1 127.0.0.0/8

bind interfaces only = yes

stunnel的安裝

ubuntu上使用stunnel4做服務端

sudo apt-get install stunnel4

把檔案/etc/default/stunnel4中的

ENABLED=1設定為1使能自動啟動

證書準備

參考http://blog.csdn.net/zahuopuboss/article/details/8664446

準備CA證書,並使用CA簽發2份證書

1份給服務端使用,1份給客戶端使用

如果有多個客戶端,則簽發多份

例如:cacert.pem,serverprivkey.pem,servercert.pem,clientprivkey.pem,clientcert.pem

使用命令openssl x509 -hash -in servercert.pem -noout得到證書的雜湊值XXXXXXXX

以XXXXXXXX.0為名稱複製servercert.pem

對客戶端證書同樣操作得到以雜湊值命名的證書檔案

用於服務端與客戶端進行相互的證書認證

服務端stunnel配置

配置檔案/etc/stunnel/stunnel.conf

內容如下:

chroot = /var/lib/stunnel4/
setuid = stunnel4
setgid = stunnel4
pid = /stunnel4.pid
debug = 7
output = /stunnel.log

ciphers = DHE-RSA-AES256-SHA256


client = no
cert = /etc/stunnel/servercert.pem
key = /etc/stunnel/serverprivkey.pem

verify = 3
CApath = /certs
CAfile = /etc/stunnel/cacert.pem

[smb]
accept = 9999
connect = 445

CApath是相對chroot路徑的,在chroot路徑下建立certs目錄

把以雜湊值命名的客戶端證書放置在CApath路徑下

驗證方式verify設定為3,使用本地儲存的證書(CApath下雜湊值命名的證書)來驗證對端的證書

客戶端win7

以下在windows上操作

新增loop介面

控制面板 -> 裝置管理器 -> 選單操作 -> 新增過時硬體

手動選擇 -> 網路介面卡

Microsoft -> Microsoft Loopback Adapter

新增完成後

開啟網路和各項中心 -> 更改介面卡設定 -> 右擊Loopback介面 -> 屬性

使用的專案只保留IPv4 -> 進入該項的高階設定 -> 禁用NetBIOS

設定Loopback介面IP為10.0.0.1

關閉共享服務

控制面板 -> 管理工具 -> 服務

禁用server服務

以便stunnel可以監聽445埠

重啟電腦

客戶端stunnel下載

https://www.stunnel.org/downloads.html

下載installer.exe安裝

stunnel設定

右擊狀態列圖示,點選edit configration

內容如下:

debug = 7

client = yes
[smb]
accept = 10.0.0.1:445
connect = serveripordomain:9999
CAfile = cacert.pem
verify = 3
cert = clientcert.pem
key = clientprivkey.pem
CApath = ./certs/

在安裝路徑下的config目錄內建立certs目錄

把以雜湊值命名的服務端證書放到cert目錄內

驗證方式verify設定為3,以便驗證服務端

點選reload configration

使用\\10.0.0.1\xxx訪問samba服務

驗證方式說明

verify = 3

Verify the peer against a locally installed certificate.

不但會使用CA驗證對端證書的有效性(同level2,可以有效避免中間人攻擊)

還會驗證CApath是否存在一份對端證書的拷貝(避免證書濫用,因為CA頒發的證書中不一定都是用來連線stunnel的)

雙方都使用verify = 3進行互相認證

參考

https://www.stunnel.org/static/stunnel.html

https://www.stunnel.org/pipermail/stunnel-users/2013-September/004337.html

https://www.stunnel.org/downloads.html

http://blog.csdn.net/zahuopuboss/article/details/8664446

https://gigacog.com/blog/2016/02/cifs-over-ssl-with-stunnel-and-windows-client/

https://www.digitalocean.com/community/tutorials/how-to-set-up-an-ssl-tunnel-using-stunnel-on-ubuntu

https://wiki.netbsd.org/tutorials/how_to_secure_samba_with_stunnel/

相關推薦

使用stunnel雙向證書認證加密samba資料傳輸

服務端ubuntu server 14.04 客戶端windows 7 服務端ubuntu 以下在ubuntu server上操作 samba的設定 在配置檔案中限制只服務內網介面和lo interfaces = eth1 127.0.0.0/8 bind interfa

keytool+tomcat配置HTTPS雙向證書認證

tomcat-7 exp html 保存 store 本地 -i window 目錄 系統需求: 1、 Windows系統或Linux系統 2、 安裝並配置JDK 1.6.0_13 3、 安裝並配置Tomcat 6.0 一、服務器證書 創建證書存儲目錄“D:\hom

使用MD5加密確定前臺傳輸資料是否有效

1、前臺資料傳輸 當前臺給後臺傳輸資料時,除了最基本的引數,還需要傳輸一個根據引數以MD5形式生成的一個簽名。 例如引數為: {"a" : 1, "b" : 2, "c" : 3} 那麼我們將資料拼成一個如下的字串 a=1&b=2&c=3 但是除了

一個以ajax請求為主的應用,資料傳輸加密的解決方案

首先是金鑰交換的過程,Diffie-Hellman金鑰交換演算法參考維基百科的文件: http://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange client端js語言,服務端php語言 用DH金鑰交換演算法交換金鑰

SpringBoot前後端資料傳輸加密

採用的演算法為AES演算法 1. 編寫加密工具類 package com.pibigstar.utils; import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import javax

資料傳輸加密技術分析

網際網路給人們生活帶來了極大的便利。然而,人們在享受網路便捷的同時,卻往往容易忽視網路暗藏著的安全隱患。資訊科技的不斷髮展使得網際網路的雙刃劍效應日漸顯現。許多不法分子、不法組織或間諜機構也充分利用網路隱蔽資源的“暗房”,將罪惡的觸角伸向他人、別國的個人隱私、戰略祕密,肆

網頁資料傳輸加密方法(前js+後java)

確保bcprov及codec的jar包存在路徑彙總 import java.security.KeyPair; import java.security.KeyPairGenerator; import java.security.SecureRandom;

資料傳輸加密——非對稱加密演算法RSA+對稱演算法AES(適用於java,android和Web)

本篇文章已授權微信公眾號 guolin_blog (郭霖)獨家釋出 資料傳輸加密   在開發應用過程中,客戶端與服務端經常需要進行資料傳輸,涉及到重要隱私資訊時,開發者自然會想到對其進行加密,即使傳輸過程中被“有心人”擷取,也不會將資訊洩露。對於加密

java AES128加密壓縮 模擬傳輸資料

package test; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.UnsupportedEncodingException; import java

kubernetes v1.12.0叢集部署(二進位制方式+基於CA簽名雙向數字證書認證方式)

kubernetes 最簡單的方式是通過yum install kubernetes 直接安裝,但是預設安裝的是v5版本的kubernetes,所以不推薦使用,還有一種是在v1.4版本開始引入了的kubeadm工具一鍵部署,但是如果 沒有訪問gcr.io的網路環境的話部署過程

使用CA簽發的服務器證書搭建Tomcat雙向SSL認證服務

true cat with 替換 提交 sta 驗證 ssl協議 sdn 第一部分,先說證書的申請。 這步是要到正規的CA公司申請正式的設備證書必須走的步驟。 1、先生成證書的密鑰對 打開命令行,切換到某個自己新建的目錄下,執行如下命令 keytool -genke

httpd2.2實現虛擬主機+證書認證+DNS

httpd2.2 ca dnshttpd2.2實現虛擬主機+證書認證+DNS 目的: 1、 在一臺虛擬機上安裝httpd2.2,在上面提供兩個基於名稱的虛擬主機: (1)www.X.com,頁面文件目錄為/web/vhosts/x;錯誤日誌為/var/log/httpd/x.err,訪問

nginx 配置 ssl 雙向證書

tro genrsa x509 code common alt ffffff openss 方式 CA 根證書制作 # 創建 CA 私鑰 openssl genrsa -out ca.key 2048 #制作 CA 根證書(公鑰) openssl req -new -x

對稱(DES/AES)與非對稱(RSA/SSL/數字證書加密介紹及實際應用

行數據 服務端 版本 報道 pass edi 得到 參數 crc 本文不對具體的算法做深入研究,只是講解各種安全算法的原理和使用場景。 一、數據校驗算法 數據校驗,是為保護數據的完整性,用一種指定的算法對原始數據計算出的一個校驗值。當接收方用同樣的算法再算一次校驗值,如

基於密鑰庫和數字證書加密解密和簽名驗證操作

return 產生 初始 www. 數字證書 ray get put 庫文件 package com.szzs; import java.io.FileInputStream; import java.security.KeyStore; import java.sec

Java NIO教程(五) 通道之間的資料傳輸

                                 Java NIO教程(五) 通道之間的資料傳輸

Vue 頁面狀態保持頁面間資料傳輸的一種方法

如果大家覺得有用,更多的模組請點選檢視 vue router給我們提供了兩種頁面間傳遞引數的方式: 動態路由匹配 程式設計式的導航 // 命名的路由 router.push({ name: 'user', params: { userId: 123 }}) // 帶查詢引數,變成 /re

用Vue來進行移動Hybrid開發和客戶端間資料傳輸的一種方法

如果大家覺得有用,更多的模組請點選檢視 即上一篇Vue 頁面狀態保持頁面間資料傳輸的一種方法,今天我們說說我們團隊是怎麼和客戶端進行互動。 為什麼到了今天,還要提hybrid開發,就我所在團隊從中獲得的好處有: 團隊較小、業務較重、迭代頻繁、需要緊急響應的團隊和專案比較適合用 使用單頁應用技術

雙向連結串列簡單實現--資料結構與演算法紀錄片第一記

  從這個月開始得準備春招的東西,所以打算重新學習資料結構與演算法,以後的部落格就以這個為主。   今天是線性結構中的雙向連結串列。   程式碼實現與測試:   DoubleLinkNode:  package linear.doublelink;/** * @Description: 連結串列節點結

C語言小結--float short等非char型資料傳輸問題

1.問題描述 最近開發中需要使用can傳輸float和short型資料,我們知道一般的嵌入式平臺的通訊埠如CAN、串列埠、網路等都是以位元組(byte)為單位傳輸的,那麼怎麼傳輸float、short等型別的資料呢?尤其是帶符號位的資料。 2.解決思路 使用共用體(union