Stunnel官方就有Windows版本,到下面的地址下載:
https://www.stunnel.org/downloads.html
選擇”stunnel-X.XX-installer.exe
“並且安裝到一個“可寫”的位置,因為Windows Vista/7/8
系統里如果安裝到C:\Program Files
或者C:\Program Files (x86)
,會無法寫入配置、日志或者不方便放置用戶的證書,因此本着偷懶和“綠化”的原則,建議安裝到其他地方。其實你也可以安裝了以后,把整個程序目錄復制出來,然后將原始安裝卸載。Stunnel就成了一個綠色程序。
這里假設新建一個目錄:C:\local
,然后把Stunnel
軟件安裝到這里:
C:\local\stunnel
然后,去你的Linux服務器上獲取證書文件:/etc/stunnel/stunnel.pem
。傳輸的方法建議是用SCP的方式。Windows上免費的PuTTY系列工具里有一個PSCP
程序,就可以用來安全地傳輸文件。
下載“putty.zip”工具包:http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html(開頭幾個是單獨文件下載,這里直接下載整個ZIP包,就是標示了“A .ZIP file containing all the binaries (except PuTTYtel), and also the help files”的地方)。
同理解壓縮到C:\usr\local\putty
。打開一個命令行窗口,CD到該目錄。
C:\usr\local\putty> pscp root@12.34.56.78:/etc/stunnel/stunnel.pem . |
如果你的SSH服務器端口不是默認的22端口,那么用-P PORT
來指定端口(P是大寫):
C:\usr\local\putty> pscp -P 12345 root@12.34.56.78:/etc/stunnel/stunnel.pem . |
命令運行后,一般是會要求你確認服務器的指紋是否正確,按“y”回車確認。然后會提示輸入密碼。密碼輸入以后就會把文件拷貝到當前目錄下。
如果你配置了SSH服務器不接受密碼登陸,而只能用密鑰登陸,那么你要先把你的SSH密鑰通過PuTTY提供的PUTTYGEN.exe
程序導入,然后導出為.ppk
格式,接着運行PAGENT.exe
,加載這個導出的PuTTY私有格式的密鑰。這時運行上述的PSCP
命令即可,不需要輸入密碼。
扯了半天傳輸證書的問題,下面就是配置Stunnel了。配置文件是C:\usr\local\stunnel\stunnel.conf
:
一上來我們先配置一下調試日志的選項:
; Debugging stuff (may useful for troubleshooting) debug = 7 output = .\stunnel.log
同理,初次使用建議debug level設置為7,調試正常后,可以修改為默認的5或更小的數字。“output”指定的日志文件設定為“.\stunnel.log”。意思就是在軟件安裝目錄(和stunnel.exe
在同一個位置)。
接下來指定證書文件。就是前面從Linux服務器上傳輸過來的”stunnel.pem”文件,將這個文件也放在Stunnel安裝目錄下,然后配置文件里這樣寫:
; Certificate/key is needed in server mode and optional in client mode cert = .\stunnel.pem key = .\stunnel.pem
請注意這里也是用了相對路徑。這個證書文件就是客戶端Stunnel和服務端Stunnel互相驗證的“密碼”,請務必妥善保存。只有有這個證書的雙方才可以通過SSL加密通信,第三方將無法看到任何信息。
最后是配置服務項:
; Example SSL front-end to a web server [https] client = yes accept = 8080 connect = 12.34.56.78:443 ; "TIMEOUTclose = 0" is a workaround for a design flaw in Microsoft SSL ; Microsoft implementations do not use SSL close-notify alert and thus ; they are vulnerable to truncation attacks ; TIMEOUTclose = 0 TIMEOUTclose = 0
這里假設你的服務器端IP地址是12.34.56.78
,服務端Stunnel監聽端口為443。而Windows上客戶端監聽端口為8080,也就是其他程序可以看到你的本地機器上有一個監聽在8080端口的HTTP代理服務器。同時注意要指定“client = yes”來打開Stunnel的客戶端模式。
同時遵照注釋里的說明,在Windows平台我們將“TIMEOUTclose”設置為0。
至於其他的服務,則全部用行首添加';’的方式注釋掉,或者直接刪除即可:
; Example SSL server mode services ;[pop3s] ;accept = 995 ;connect = 110 ;[imaps] ;accept = 993 ;connect = 143 ;[ssmtp] ;accept = 465 ;connect = 25 ; Example SSL client mode services ;[gmail-pop3] ;client = yes ;accept = 127.0.0.1:110 ;connect = pop.gmail.com:995 ;[gmail-imap] ;client = yes ;accept = 127.0.0.1:143 ;connect = imap.gmail.com:993 ;[gmail-smtp] ;client = yes ;accept = 127.0.0.1:25 ;connect = smtp.gmail.com:465
保存配置文件后。雙擊安裝目錄里的stunnel.exe
就開始運行了,如果一切正常,雙擊運行后不會有窗口出現,而是 在系統托盤欄出現一個stunnel的圖標。右鍵點擊這個圖標可以查看程序日志、重啟服務、退出等操作。如果出現錯誤,可以查看日志文件排查問題。測試正 常后,就可以配置Windows啟動后自動運行“C:\usr\local\stunnel\stunnel.exe”,這樣就不用去管它了。
最后就是在你的瀏覽器里配置使用這個代理即可,即代理地址為:127.0.0.1:8080。