最新消息

[公告2014/05/30] 如有需要將部落格中,任何一篇文章的程式碼使用在商業用途,請與我聯繫。

[公告2015/04/26] Line版的 iInfo程式與投資應用 群組已上線想加入的朋友們,請先查看 "入群須知" 再與我聯繫 Line : aminwhite5168,加入請告知身分與回答 "入群須知" 的問題。

[公告2018/04/22] 台北 Python + Excel VBA 金融資訊爬蟲課程,課程如網頁內容 金融資訊爬蟲班:台北班 Python 金融資訊爬蟲、EXCEL VBA 金融資訊爬蟲

[公告2019/01/08] 請注意:我再次重申,部落格文章的程式碼,是要提供各位參考與學習,一旦網頁改版請自行修改,別要求東要求西要我主動修改,你們用我寫東西賺錢了、交差了,請問有分我一杯羹嗎?既然賺錢沒分我,請問有什麼理由要求我修改,如果沒能力改,就花錢來找我上課。

[公告2019/12/01] 若各位有 Excel VBA 案子開發需求,歡迎與我聯繫,可接案處理。

[公告2020/05/22] 頁面載入速度慢,起因為部分JS來源(alexgorbatchev.com)失效導致頁面載入變慢,目前已做調整,請多見諒。

2013年12月25日 星期三

Windows下使用VC2010編譯OpenSSL

OpenSSL是一套提供許多免費加密函數的開放程式碼,因應需要這裡簡單介紹如何在Windows環境下透過Visual Studio編譯OpenSSL.exe
準備工具
  1. VC2010:請自行安裝Visual Studio 6、Visual Studio 2010或其他版本
  2. Perl:請自行依據自己機器使用的Windows環境,下載對應的x86或x64版本的ActivePerl 
  3. OpenSSL:下載OpenSSL原始碼 
  4. NASM或MASM組合語言組譯器:
    NASM是一種可攜性高且可跨多個作業系統平台的組合語言組譯器,下載
    MASM微軟推行的組合語言組譯器,不具備跨平台的特性,僅能在Intel平台上使用,下載
ActivePerl、NASM安裝與設定
  1. ActivePerl安裝完成後,開啟Visual Studio Command Prompt (2010),輸入perl -v,如果有顯示perl的版本,表示ActivePerl安裝完成。若沒有顯示perl的版本,請重開機後再將此步驟重做一次即可。
  2. NASM提供兩種方式安裝,一種需要透過exe安裝,另一則為直接使用已build好的exe,若是使用官網提供的已build好套件,僅需將套件中的exe存放至預設安裝路經下C:\Program Files (x86)\NASM,最後再設定環境變數即可,如下操作。
  3. 電腦 -> 系統內容 -> 進階系統設定 -> 環境變數,在系統變數欄位裡有一個變數名為Path,在變數值欄位裡的最後面先加一個分號 ";",在分號後面加入NASM資料夾的路徑C:\Program Files (x86)\NASM
編譯OpenSSL流程
  1. 開啟Visual Studio Command Prompt (2010)視窗,切換至解壓縮的OpenSSL資料夾。
  2. 設定編譯OpenSSL.exe Configure設定。
    x86環境使用:perl Configure VC-WIN32
    x64環境使用:perl Configure VC-WIN64A
  3. P.S. 若有需要將Build的好OpenSSL.exe及其相關檔案存其他路徑,可用以下的作法。
    在VC-WIN32或VC-WIN64A後面加上--prefix=<資料夾路徑>。
    x86環境使用:perl Configure VC-WIN32 --prefix=C:\TestOpenSSL
    x64環境使用:perl Configure VC-WIN64A --prefix=C:\TestOpenSSL

  4. 建立Makefile文件,使用NASM組合語言編譯ms\do_nasm
  5. 如果使用MASM,接著輸入:ms\do_masm
    如果使用NASM,接著輸入:ms\do_nasm
    如果不使用組合語言編譯器,輸入:ms\do_ms

  6. 選擇OpenSSL.exe編譯的類型
  7. 動態連結:nmake -f ms\ntdll.mak
    靜態連結:nmake -f ms\nt.mak

    P.S. 編譯過程發生錯誤,參考如下方式處理
    (1) 確認NASM是否有添加環境變數討系統
    (2) 環境變數已添加,請重開機再試一次

  8. 驗證編譯好的檔案是否可以正常運作(此步驟可略過不執行)
  9. 動態測試:nmake -f ms\ntdll.mak test
    靜態測試:nmake -f ms\nt.mak test

  10. 安裝編譯好的檔案
  11. 動態安裝:nmake -f ms\ntdll.mak install
    靜態安裝:nmake -f ms\nt.mak install

    P.S.此部分完成後,若在步驟2沒有設定需要另外輸出的資料夾路徑,將會在openssl資料夾外產生一個user的資料夾來存放openssl.exe、libeay32.dll、、ssleay32.dll

  12. 若要清除已編譯好的檔案,可參考如下指令
  13. 動態清除:nmake -f ms\ntdll.mak clean
    靜態清除:nmake -f ms\nt.mak clean
如果以上步驟都成功,可在openssl看到out32、out32dll資料夾產生,裡面openssl.exe、libeay32.dll、libeay32.lib、ssleay32.dll、ssleay32.lib
動態編譯檔案輸出目錄\openssl\out32dll
靜態編譯檔案輸出目錄\openssl\out32

Q & A
Q:當移出openssl.exe至其他資料夾執行時,若出現WARNING: can't open config file: /usr/local/ssl/openssl.cnf訊息,該如何處理?
A:將openssl.cnf所在的路徑,存入環境變數OPENSSL_CONF即可。
set OPENSSL_CONF=%CD%\openssl.cnf

沒有留言:

張貼留言