2017年4月21日 星期五

[FAQ]安裝SSL憑證的步驟,設定IIS編輯繫結(Edit Binding)for HTTPS網站

上一篇文章提到如何申請?....  http://mis2000lab.blogspot.tw/2017/04/faqssl-httpssop.html
這篇文章提到   如何安裝SSL憑證。


第一,請在命令提示字元(DOS指令視窗)
            或是在「開始」==>「執行」,輸入 cmd 就會出現

第二,請執行 mmc指令
     

第三,出現一個管理畫面
    
 
      
上圖有三個步驟,對應廠商給你的三個SSL憑證。
  • 請把第一個ROOT CA憑證,放在第一個位置裡面。請用滑鼠「右鍵」操作,將他匯入第一區。
  • 第二個 Chain 憑證請匯入第二區(英文是 Intermedia)
  • 最後一個 您自己網站的SSL憑證,請匯入第三區「個人」裡面。

應該就完成了。

建議您立刻把SSL憑證匯出,完整匯出成 pfx格式,就會把上面三者匯出在同一個檔案內,以後可以移植、保存。
      
 
      
       
注意!上面第二個選項,不要勾選!!
不要勾選「如果匯出成功及刪除私密金鑰」


理論上,您在第三區「個人」裡面看見的憑證,小圖示都有一個明顯的金鑰匙圖案。
沒有的話,可能就出錯了。 

如果出錯,請執行下面指令。

此時請使用指令來復原。===========================================================
(1).  刪除你剛剛安裝的SSL(在上方的MMC視窗裡面)
        並且把你的SSL憑證檔案  Copy到  C:\windows\system32\  目錄底下

(2). 請在命令提示字元(DOS指令視窗)
            或是在「開始」==>「執行」,輸入 cmd 就會出現

(3).  輸入指令   cd \windows\system32      (然後跳到你OS安裝的目錄下,預設都是 c:\windows)
(4).  輸入指令   certutil -addstore my "你的SSL憑證檔名"    此為安裝
(5).  上面指令成功以後,繼續輸入 certutil -repairstore my "你的SSL憑證檔名"           此為修復     
===========================================================


完成後,可以到 IIS裡面,將這個SSL憑證加入您的(或是 另一台)網站內
第一,點選您的網站,選擇「編輯繫結(Edit Binding)」

第二,加入 HTTPS  就會看見 Port 443

第三,底下的「選擇(Select)」按鈕,可以看您的SSL憑證名稱
如果沒看見,代表出錯,請看上一個步驟,用指令來修復與重新安裝


講完了,好簡單。

  
我將思想傳授他人, 他人之所得,亦無損於我之所有;
猶如一人以我的燭火點燭,光亮與他同在,我卻不因此身處黑暗。----Thomas Jefferson
寫信給我--  mis2000lab (at) yahoo.com.台灣  或是  school (at) mis2000lab.net
................   facebook社團   https://www.facebook.com/mis2000lab   ......................
................   Google+   https://plus.google.com/100202398389206570368/posts ........
................  YouTube (ASP.NET) 線上教學影片  http://goo.gl/rGLocQ

[FAQ]如何申請、設定SSL憑證 (HTTPS),簡單SOP步驟

網站申請了SSL憑證,可以透過 https (port 443),保障連線安全
步驟其實很簡單。
方法一,打電話給SSL憑證代辦公司,他們會立刻幫你辦好(把你教會)
                        講完了....夠簡單吧。
      
方法二,您需要準備這些資料。
1.  申請對外的 IP Address(固定IP、Public IP)
2.  申請您的網站 Domain Name,例如 www.abc.com
3.  您的SSL憑證生效日期?
     通常是一年、三年,買久一點會比較便宜。
      申辦速度很快,安裝也很簡單,提早兩週申請即可。最快兩天會辦好。
  
4. 在您的主機上面,建立一個網站,產生CSR文件(一個文字檔)
      如此一來,SSL公司才知道您的申請是真的,不是詐騙。
5. 拿到SSL憑證,安裝進去。
  
第四、五個步驟,對方會給你一份SOP,圖文並茂,自己就能安裝。
 裝不好的話,對方也會指導您安裝或是 Debug。
  通常更換SSL憑證,不需要重新開機、或是重新啟動Web服務,使用者幾乎沒感覺。

廣告一下,我都跟這家購買,
速度快、價格也便宜、服務很熱忱,
確定能用以後他們才請款(足感心A!)

這是他們的文件說明,很詳細。http://www.ssl.com.tw/Down/index.asp

不用擔心太多,花錢以後,很多事都一下子就做好了。
沒什麼設定步驟,安啦!
  
這家公司還提供「免費」的個人郵件SSL憑證

下一篇文章,教您如何安裝SSL(for IIS)
http://mis2000lab.blogspot.tw/2017/04/faqssliisedit-bindingfor-https.html


我將思想傳授他人, 他人之所得,亦無損於我之所有;
猶如一人以我的燭火點燭,光亮與他同在,我卻不因此身處黑暗。----Thomas Jefferson
寫信給我--  mis2000lab (at) yahoo.com.台灣  或是  school (at) mis2000lab.net
................   facebook社團   https://www.facebook.com/mis2000lab   ......................
................   Google+   https://plus.google.com/100202398389206570368/posts ........
................  YouTube (ASP.NET) 線上教學影片  http://goo.gl/rGLocQ

2017年3月29日 星期三

[習題]ASP.NET動態加入控制項 -- 動態加入TextBox,每寫完一格會自動跳去(.Focus()方法)下一格

Q :  我動態產生了數個 TextBox在畫面上,
    希望每寫完一項(按下Enter鍵),就會自動跳去下一個格(即 .Focus()方法)
    例如:寫完TextBox1,按下Enter,就會自動跳去下一個(TextBox2)....以此類推。
 
      
  
 
A : 要做這件事以前,有不少基本功夫要先打穩馬步 
這個範例應該是初學者不宜。
 
 
關於「動態」產生ASP.NET控制項,您可以參閱我以前整理的文章
 
主要的技巧可以參閱我的書本 -- ASP.NET專題實務(松崗出版)
    上集,第三章的 PlaceHolder
    下集,動態問卷產生系統
 
這些文章在我的網站上也能找到。
 
 
**************************
***  入  門  篇
**************************
如果您連靜態網頁上的、固定的 TextBox都做不到這個功能 --
             寫完TextBox1,按下Enter,就會自動跳去下一個(TextBox2)....以此類推。
 
那也不要指望「動態產生TextBox」....畢竟功力有別。
 
連基本的都做不到,不要想一步登天(不會走,就想飛?)
 
 
HTML畫面上,可以設計五個 TextBox,都設定 AutoPostBack 搭配 TextChanged事件 
 
您當然可以撰寫這種程式啦,我不怪你(畢竟是初學者)
 
一樣可以正常運作
 
////************************************************************************
////****  冗長、重複的程式碼  ****
////************************************************************************
//    protected void TextBox1_TextChanged(object sender, EventArgs e)
//    {
//        TextBox2.Focus();
//    }
//    protected void TextBox2_TextChanged(object sender, EventArgs e)
//    {
//        TextBox3.Focus();
//    }
//    protected void TextBox3_TextChanged(object sender, EventArgs e)
//    {
//        TextBox4.Focus();
//    }
//    protected void TextBox4_TextChanged(object sender, EventArgs e)
//    {
//        TextBox5.Focus();
//    }
 
但你有沒有發現這種寫法,程式碼幾乎一模一樣,不能濃縮一下,好可惜。
 
我把所有的 Textchanged事件指向同一個,比較簡單
(請看書本上集第三章的介紹,我上課會教。這是重點!)
        1.<asp:TextBox ID="TextBox1" runat="server" AutoPostBack="True" OnTextChanged="TextBox1_TextChanged"></asp:TextBox>
        <br />
        2.<asp:TextBox ID="TextBox2" runat="server" AutoPostBack="True" OnTextChanged="TextBox1_TextChanged"></asp:TextBox>
        <br />
        3.<asp:TextBox ID="TextBox3" runat="server" AutoPostBack="True" OnTextChanged="TextBox1_TextChanged"></asp:TextBox>
        <br />
        4.<asp:TextBox ID="TextBox4" runat="server" AutoPostBack="True" OnTextChanged="TextBox1_TextChanged"></asp:TextBox>
        <br />
        5.<asp:TextBox ID="TextBox5" runat="server"></asp:TextBox>(不設定、沒事件)

 
後置程式碼如下,改成VB語法應該很簡單吧。 
    protected void TextBox1_TextChanged(object sender, EventArgs e)
    {
        // 為了避免重複寫多個 TextBox的 TextChanged事件,而內容幾乎一樣,所以改成這樣。 
        TextBox TB = (TextBox)sender; 
        if(TB.UniqueID.Length == 8)
        {
            String ID_no = TB.UniqueID.Substring(7, 1);
            // 抓取 TextBox ID最後的流水號,例如 TextBox「1」
 
            TextBox TBnext = (TextBox)Page.Form.FindControl("TextBox" + (Convert.ToInt32(ID_no) + 1).ToString());
            //上集 第十八章的範例有提到,多重檔案、批次上傳。
            TBnext.Focus(); 
        }  
    }
    
    
這裡也用到我慣用的技巧 -- 字串相連與流水號 

OK,如果程式會跑了,那我們把範例改呈「動態」產生 TextBox再來試試看 
 
**************************
***  進  階  篇
**************************
牢記前輩給我們的指導:
      動態加入控制項,可以寫在 Page_Init事件裡面
      想拜師學藝的,可以參閱這一班 -- ASP.NET動態套版班 http://www.dotblogs.com.tw/mis2000lab/archive/2013/09/02/116064.aspx       
    protected override void OnInit(EventArgs e)
    {
        for (int i = 1; i <= 5; i++ )
        {
            TextBox TB = new TextBox();
            TB.ID = "TextBox" + i;
            TB.Text = "動態產生" + i;
            TB.AutoPostBack = true;
 
            TB.TextChanged += new System.EventHandler(this.TextBox1_TextChanged); 
            // HOW TO:在執行階段時動態繫結 ASP.NET Web 網頁中的事件處理常式
            Page.Form.Controls.Add(TB); 
        }            
        base.OnInit(e);
    } 
 
至於 TextBox1_TextChanged事件跟上一個範例一樣,COPY過來就能用。在此不贅述。 
 
 
 
可能的 Bug與改進方式:
...................................................................................................................................
     關於 .Focus()方法,雖然ASP.NET也有提供,但 Server端的語法會導致畫面一直閃爍(PostBack)
 
    改用 JavaScript也可以做到,並解決這個問題 
    ASP.NET搭配 JavaScript可以參閱這篇文章:http://www.dotblogs.com.tw/hatelove/archive/2009/10/28/11325.aspx
 
或是

黯然銷魂 之 網頁繪製圖表 Google Charts with JavaScript....與ASP.NET網頁結合 (ClientScriptManager.RegisterStartupScript 方法)

...................................................................................................................................
 
這個問題是讀者來信詢問,我臨時寫出的範例
分享一點想法,給大家參考(或許是一個方向) 
沒法保證  100% OK,或是 您COPY去用一個字都不用改
更沒法保證範例 "絕對" 完美囉
   
範例下載: 
 
相關的文章:

[習題]念念不忘的「按下Enter」送出,Form表單的 DefaultButton屬性

這一週連續有兩讀者來詢問相同的問題
課堂上也有人問起

說真的,我未曾遇見過這種要求,可能我的User都比較好講話吧

今天我請教了一位 資深的技術高手,才學到這一招
為我自己的學習作一個紀錄,也可以將來作為教材


問   題:
=============================================
輸入文字之後,我要按下鍵盤的 Enter按鍵,而不要按下畫面上的 Button按鈕

當畫面上有多個Button時,我按下 Enter按鍵
不一定會觸發我想要動作的那個按鈕?
怎麼辦?

 
     
上圖裡面,我們可以發現:
      有一個按鈕被「藍色框框」給標示起來,你按下 [Enter]按鍵就會觸發他,而不是你想要觸發的 Button2
      我是用IE 9.0來看執行成果。

另外,讀者回報說:他用IE 8.0來看,所有Button按鈕統統被「藍色框框」給標示


解  決:
============================================= 
     
  
這篇文章,我打好後,突然消失了
只好重打一次

回家打字,因為家裡的電腦是我太太用的
輸入法(挑字、習慣字)都跟我有很大差異
我很難挑到正確的字
月打字月生氣......我也不想訂正錯字了
大家忍耐一點

重新打字,很多話也不想重打了,就簡略帶過了。真抱歉


網路上的相關文章:

 
 
我將思想傳授他人, 他人之所得,亦無損於我之所有;
猶如一人以我的燭火點燭,光亮與他同在,我卻不因此身處黑暗。----Thomas Jefferson
寫信給我--  mis2000lab (at) yahoo.com.台灣  或是  school (at) mis2000lab.net
................   facebook社團   https://www.facebook.com/mis2000lab   ......................
................   Google+   https://plus.google.com/100202398389206570368/posts ........
................  YouTube (ASP.NET) 線上教學影片  http://goo.gl/rGLocQ