Category: 軟件

  • 重新審視 XSS 攻擊的可能

    重新審視 XSS 攻擊的可能

    事源近日同同事閒談時,她說女兒學校比黑客入侵,全校系統停擺對外對內都是。

    所以我又重新審視 kenng.hk 現有系統的安全性,雖然我的網站內的資料沒有什麼價值,但都希望學習加強保安的知識。

    跨網站指令碼(英語:Cross-site scripting,通常簡稱為:XSS)是一種網站應用程式的安全漏洞攻擊,是代碼注入的一種。它允許惡意使用者將程式碼注入到網頁上,其他使用者在觀看網頁時就會受到影響。這類攻擊通常包含了HTML以及使用者端手稿語言

    XSS攻擊通常指的是通過利用網頁開發時留下的漏洞,通過巧妙的方法注入惡意指令代碼到網頁,使使用者載入並執行攻擊者惡意製造的網頁程式。這些惡意網頁程式通常是JavaScript,但實際上也可以包括JavaVBScriptActiveXFlash或者甚至是普通的HTML。攻擊成功後,攻擊者可能得到更高的權限(如執行一些操作)、私密網頁內容、對談cookie等各種內容。

    更多詳情可以參考以下網站:

    https://www.cloudflare.com/zh-tw/learning/security/threats/cross-site-scripting

    https://baike.baidu.com/item/XSS%E6%94%BB%E5%87%BB/954065

    我自己就使用 CSP 來做一些保障措施 , 那麼什麼是 CSP 呢?

    内容安全策略(CSP)

    内容安全策略CSP)是一个额外的安全层,用于检测并削弱某些特定类型的攻击,包括跨站脚本(XSS)和数据注入攻击等。无论是数据盗取、网站内容污染还是恶意软件分发,这些攻击都是主要的手段。

    CSP 被设计成完全向后兼容(除 CSP2 在向后兼容有明确提及的不一致; 更多细节查看这里 章节 1.1)。不支持 CSP 的浏览器也能与实现了 CSP 的服务器正常工作,反之亦然:不支持 CSP 的浏览器只会忽略它,如常运行,默认为网页内容使用标准的同源策略。如果网站不提供 CSP 标头,浏览器也使用标准的同源策略

    为使 CSP 可用,你需要配置你的网络服务器返回 Content-Security-Policy HTTP 标头(有时你会看到 X-Content-Security-Policy 标头,但那是旧版本,并且你无须再如此指定它)。

    除此之外,<meta> 元素也可以被用来配置该策略,例如

    htmlCopy

    <meta
      http-equiv="Content-Security-Policy"
      content="default-src 'self'; img-src https://*; child-src 'none';" />
    

    备注:某些功能(例如发送 CSP 违规报告)仅在使用 HTTP 标头时可用。

    威胁

    缓解跨站脚本攻击

    CSP 的主要目标是减少和报告 XSS 攻击。XSS 攻击利用了浏览器对于从服务器所获取的内容的信任。恶意脚本在受害者的浏览器中得以运行,因为浏览器信任其内容来源,即使有的时候这些脚本并非来自于它本该来的地方。

    CSP 通过指定有效域——即浏览器认可的可执行脚本的有效来源——使服务器管理者有能力减少或消除 XSS 攻击所依赖的载体。一个 CSP 兼容的浏览器将会仅执行从白名单域获取到的脚本文件,忽略所有的其他脚本(包括内联脚本和 HTML 的事件处理属性)。

    作为一种终极防护形式,始终不允许执行脚本的站点可以选择全面禁止脚本执行。

    缓解数据包嗅探攻击

    除限制可以加载内容的域,服务器还可指明哪种协议允许使用;比如(从理想化的安全角度来说),服务器可指定所有内容必须通过 HTTPS 加载。一个完整的数据安全传输策略不仅强制使用 HTTPS 进行数据传输,也为所有的 cookie 标记 secure 标识,并且提供自动的重定向使得 HTTP 页面导向 HTTPS 版本。网站也可以使用 Strict-Transport-Security HTTP 标头确保连接它的浏览器只使用加密通道。

    使用 CSP

    配置内容安全策略涉及到添加 Content-Security-Policy HTTP 标头到一个页面,并配置相应的值,以控制用户代理(浏览器等)可以为该页面获取哪些资源。比如一个可以上传文件和显示图片页面,应该允许图片来自任何地方,但限制表单的 action 属性只可以赋值为指定的端点。一个经过恰当设计的内容安全策略应该可以有效的保护页面免受跨站脚本攻击。本文阐述如何恰当的构造这样的标头,并提供了一些例子。

    https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Guides/CSP

    https://www.cnblogs.com/wuguanglin/p/XSS.html

    https://aszx87410.github.io/beyond-xss/ch2/xss-defense-csp

    https://csper.io/evaluator

    https://csp-evaluator.withgoogle.com

  • 用PYTHON每日更新追蹤香港COVID-19確診或到訪大廈名單

    過了農曆新年, 全港疫情大爆發, 好多香港人都會每日上網看看”衛生署”的確診名單 , 尤其對做物管及做公司ADMIN朋友 , 某程度上有少許幫助 , 但間中最好抽查https://www.chp.gov.hk/files/pdf/building_list_chi.pdf

    所以我寫了一個小程式來追蹤指定大廈是否在確診名單內

    本身我寫的程式在 LINUX 運行 , 每天會自動執行一次再電郵給我 , 但好多人公司或家用電腦都是行 windows 所以我修改程式適合在 windows 行及輸出檔案是 EXCEL FILE

    設計該程式概念 : 先下載衛生署 PDF 名單 , 轉換成文字檔方便程式讀取 , 之後程式核對 自定名單同衛生署名單有沒有匹配 , 記錄你要找的數據 , 把文字檔轉換成 EXCEL FILE

    步驟一:

    先安裝 windows 版 OPENJDK 下載網址:https://docs.microsoft.com/zh-tw/java/openjdk/download

    64bit windows 下載64bit版, 32bit windows 下載32bit版

    下載完直接安裝

    步驟二:

    安裝 Python 程式語言 , 下載網址: https://www.python.org/downloads/release/python-3102/

    下載完直接安裝

    完成後要裝程序需要的python模組

    按 “win key” + R , 執行 “CMD”

    升級 python pip 下載器 , 在 “命令提示字元” 內 輸入 :

    pip install –upgrade pip

    注意 : –upgrade 前是兩個 – 減號

    安裝python模組, 在 “命令提示字元” 內 輸入 :

    pip3 install requests tabula-py Workbook datetime openpyxl

    步驟三:

    如果你的電腦已經有軟件可以開啟 UTF8 FILE可以 忽略這個

    安裝 notepad++ 軟件 , 免費好用 ! 下載網址: https://notepad-plus-plus.org/downloads/

    步驟四:

    我編寫的程式 : Download

    解壓後內有3個FILE , “run.cmd” “main.py” “udata.csv”

    值得注意的是 , 有些朋友會 “不經意” 把繁簡字混亂使用 , 例子: “厦” 及 “廈” 前者簡體 後者繁體 ! 對系統來說這是不同的字 , 如果你輸入的 “某某大厦” 是會找不到的, 應該”某某大廈”才能找到 , 所以我建議不要用全名, 用 “某某”

    用 notepadd++ 修改 udata.csv , 編碼 utf-8

    run.cmd 內容如下所示

    double click “run.cmd” 會執行程式, 如下圖

    同時會有5個FILE 產生 , “building_list_chi.pdf” 是從衛生署下載的名單 , “data.csv” 是從PDF轉換成文字檔, “email.csv” 是輸出文字備用EMAIL, “record.csv” 是記錄你找到的記錄, “checklist.xlsx” 是可以用 EXCEL 開啟的記錄

    備註: 所有 CSV 檔案都是 UTF8 編碼, 用 EXCEL 開會亂碼 , 如果真的要開用 NOTEPAD++ 或者用 libreoffice 都可以正常顯示中文字

    如有疑問可電郵至 info@kenng.hk

  • 用Arduino 控制全彩LED(紅,綠,藍) 三原色調配顏色

    用Arduino 控制全彩LED(紅,綠,藍) 三原色調配顏色

    我們先準備一些材料 , arduino nano , 紅綠藍LED各一, 一粒全彩LED, 3個按鈕,3粒10KΩ電阻(按鈕用) , 6粒150Ω(保護LED用) . 注意我的圖片是用了470Ω , 因為我找不到150Ω

    先看看以下是我的材料圖片

    我用了模擬器製作了一個接線圖給大家參考

    首先我們先了解一下, 脈波寬度調變(英語:Pulse-width modulation,縮寫:PWM)參考網址 : https://zh.wikipedia.org/wiki/脈衝寬度調變 , https://a091234765.pixnet.net/blog/post/399625162-%5B筆記%5Darduino實驗五%3Apwm調控

    我嚐試去表達一下自己的理解 , 如果不正確請不要駡我, 只是我個人的理解能力有限 !

    首先我們假設10秒是一個周期 , 我們有個水桶 , 有一個水龍頭 . 例子1: 打開水龍頭, 水桶開始注水 , 10 秒周期水龍頭都是開著的,水桶就滿了 . 例子2 : 打開水龍頭, 10 秒周期裏水龍頭只開了9秒, 那水桶就只有90%滿 , 例子3 : 打開水龍頭, 10 秒周期裏水龍頭只開了8秒, 那水桶就只有80%滿 以此類推 .

    PWM 用上述例子解釋 , 占空比= 水龍頭開 , 水龍頭開=5V , 水龍頭關=0V , 如果周期內占空比滿戴 , 結果就是 5V , 如果占空比只有75% , 那麼結果是3.75V , 如果占空比只20%, 那麼結果是1V 了 ! 說白了就是控制占空比 , 控制輸出的電壓來控制LED亮度 , 這就是我們今次的目的 , 得出三原色不同亮度的組合來合成各種顏色

    講完構思, 現在實作吧 ! 開始 …… LED 燈加上限流電阻來保護

    按鈕部分 , 一端接 GND , 一端接5V+10K電阻作為 Arduino 輸入訊號端. 平時不按下去 Arduino 輸入訊號端 會是高電壓 , 按下去的時候接地道通, Arduino 輸入訊號端 會是低壓 ! 高低電壓的輸入就會控制 Arduino 程序的流向

    以下是 Arduino 的程序代碼 , 如有興趣的朋友可以下載來玩玩 下載

    以下是本人寫的代碼 , 不是寫得好好 ! 請見諒 :

    int redled = 15; // 紅色LED接腳
    int greenled = 16; // 綠色LED接腳
    int blueled = 17; // 藍色LED接腳
    int rled = 3; // 全彩LED紅色接腳 PWM
    int gled = 5; // 全彩LED綠色接腳 PWM
    int bled = 6; // 全彩LED藍色接腳 PWM
    int ranum =0; // 全彩LED紅色亮度參數 0 – 255
    int ganum =0; // 全彩LED綠色亮度參數 0 – 255
    int banum=0; // 全彩LED藍色亮度參數 0 – 255
    int rgbbutt=14; // 轉換”紅綠藍”燈按鈕接腳
    int upbutt=7; // 增加亮度按鈕接腳
    int downbutt=8; // 減少亮度按鈕接腳
    int val=0; // 儲存紅綠藍按鈕狀態
    int valup=0; // 儲存增加亮度按鈕狀態
    int valdown=0; // 儲存減少亮度按鈕狀態
    int ledstat=0; // 儲存 “紅綠藍” 當前參數,全滅=0, 紅色=1 , 綠色=2, 藍色=3

    void setup() {
    // put your setup code here, to run once:
    Serial.begin(9600);

    pinMode (redled, OUTPUT); // 設定為輸出狀態
    pinMode (greenled, OUTPUT); // 設定為輸出狀態
    pinMode (blueled, OUTPUT); // 設定為輸出狀態
    pinMode (rled, OUTPUT); // 設定為輸出狀態
    pinMode (gled, OUTPUT); // 設定為輸出狀態
    pinMode (bled, OUTPUT); // 設定為輸出狀態
    pinMode (rgbbutt, INPUT); // 設定為輸入狀態
    pinMode (upbutt, INPUT); // 設定為輸入狀態
    pinMode (downbutt, INPUT); // 設定為輸入狀態
    }

    void loop() {
    // put your main code here, to run repeatedly:
    val = digitalRead(rgbbutt);
    delay(50);
    // Serial.println (val);

    if (val == LOW) {
    val = digitalRead(rgbbutt);
    if (val == HIGH){
    ledstat=ledstat+1;

            if (ledstat == 1) {
              digitalWrite(redled,1);
              digitalWrite(greenled,0);
              digitalWrite(blueled,0);
            }
            else if (ledstat == 2) {
              digitalWrite(redled,0);
              digitalWrite(greenled,1);
              digitalWrite(blueled,0);  
            }
            else if (ledstat == 3) {
              digitalWrite(redled,0);
              digitalWrite(greenled,0);
              digitalWrite(blueled,1);  
            }
            else {
              digitalWrite(redled,0);
              digitalWrite(greenled,0);
              digitalWrite(blueled,0);
              ledstat=0;
            }
    }

    }

    Serial.println (ledstat);
    if (ledstat == 1 ) {
    valup = digitalRead(upbutt);
    valdown = digitalRead(downbutt);
    delay(20);
    if (valup == LOW) {
    if (ranum < 255 ){ ranum = ranum+1; Serial.println (“紅色”+String(ranum)); } } if (valdown == LOW) { if (ranum > 0 ){
    ranum = ranum-1;
    }
    }
    analogWrite(rled,ranum);
    }

    else if (ledstat == 2) {
    valup = digitalRead(upbutt);
    valdown = digitalRead(downbutt);
    delay(20);
    if (valup == LOW) {
    if (ganum < 255 ){ ganum = ganum+1; } } if (valdown == LOW) { if (ganum > 0 ){
    ganum = ganum-1;
    }
    }
    analogWrite(gled,ganum);
    }
    else if (ledstat == 3) {
    valup = digitalRead(upbutt);
    valdown = digitalRead(downbutt);
    delay(20);
    if (valup == LOW) {
    if (banum < 255 ){ banum = banum+1; } } if (valdown == LOW) { if (banum > 0 ){
    banum = banum-1;
    }
    }
    analogWrite(bled,banum);
    }

    Serial.println (String(ranum)+”:”+String(ganum)+”:”+String(banum));
    }

    以下是我自己完成後做的 DEMO 視頻

    理論上可以實現全彩 , 但因為 LED 各色的參數是不一樣 红2.1v,绿2.8v,蓝2.8v,白3.1v ! 我的 DEMO 不能完全的全彩

  • ARDUINO 模擬器

    ARDUINO 模擬器

    近期健伍試用一款模擬器 , 等我介紹一下比大家看看, 我都是初學不是太熟識

    我用的是 AUTODESK TINKERCARD , 網圵 : https://www.tinkercad.com

    我們來CREATE 一個新電路玩玩

    新增了一個試驗板 , 加了 6 顆不同顏色 LED , 在每顆發光二極管加上一個150Ω 電阻(我自己會加大一點點, 我會用470Ω 電阻) , 為什麼要加上電阻? 因為可以防止LED承受過大電壓而燒壞

    如何計算電阻阻值

    LED限流電阻計算公式:限流電阻Ω = (電源電壓V – LED正向穩壓電壓V) / 限流電流A

    設紅色LED正向穩壓電壓2V,電流20mA,電源電壓5V,代入公式就是(5V-2V) / 0.02A = 150Ω

    你們可以參考以下網址 : https://www.gushiciku.cn/dc_news/digital_ZgNU

    用圖塊的方式製作, 就好像積木一樣 , 一顆一顆的接著發亮又關燈

  • 用 EXCEL VBA 製作密碼產生器

    用 EXCEL VBA 製作密碼產生器

    我想很多 IT 的朋友都會遇過要大量產生密碼的時候 , 好多人都會設定同一密碼之後要求用戶再更改對嗎 ? 但好像存在某情度的風險對吧!

    所以我今次要分享用 EXCEL VBA 製作產生隨機密碼的小程序 , 你想了解一下什麼是 VBA 可以參考以下網址 :

    https://docs.microsoft.com/zh-tw/office/vba/api/overview/language-reference

    首先一想起隨機產生數字, 好多朋友會想到 EXCEL 內置的 RANDBETWEEN , 但我們要的是更複習的密碼 !

    例如 : 英文 + 數字+ 特殊字符 (kswdhn8772!@#$) 所以 randbetween 就不能滿足我了

    我的 VBA 內產生隨機字元的部分來自於以下網址 :

    https://www.thespreadsheetguru.com/the-code-vault/generate-string-random-characters-vba-codet?rq=Create%20a%20Randomized%20String%20of%20Characters

    我在這些代碼內再作修改 , 增加了可設定密碼長度和密碼數量 !

    但要提醒下載了我提供的 EXCEL 朋友不要立即啟用內含『巨集』的程式,不論是我提供的程式或其他網站下載的程式,都不能立即啟用,先去看看程式內有沒有一些不對的代碼!

    下載 隨機密碼產生器_V1.7z , 要用 7 ZIP 解壓呀 !

    如何開啟開發人員選項呢? 可以參考以下網址 : https://officeguide.cc/excel-show-developer-tab-tutorial/

    以下是我的 VBA 代碼 :

    Private Sub CommandButton1_Click()
    '取用部分原始碼 網址如下
    'PURPOSE: Create a Randomized String of Characters
    'SOURCE: www.TheSpreadsheetGuru.com/the-code-vault
    '增加了密碼長度設定及可設定生成密碼數量 BY KEN NG
    'www.kenng.hk/wp/wp/wp/
    '還有我取消了" i, l, 1, " 等會使人唔會的字元 , 如果想要全字母及全數字可以自己修改 , 我留了那部分自己 uncommt
    Dim CharacterBank As Variant
    Dim x As Long
    Dim str As String
    Dim Length As Integer
    Dim i As Integer
    Dim j As Integer
    Length = 工作表1.Range("C1").Value
    If VarType(工作表1.Range("E1").Value) < 0 Then
    j = 1
    ElseIf VarType(工作表1.Range("E1").Value) > 1 Then
    j = Val(工作表1.Range("E1").Value)
    End If
    For i = 1 To j
    last111 = 工作表1.Cells(工作表1.Rows.Count, "A").End(xlUp).Row
    'Test Length Input
    If Length < 1 Then
    MsgBox "密碼長度不可以設定為零"
    Exit Sub
    End If
    CharacterBank = Array("a", "b", "c", "d", "e", "f", "g", "h", "j", _
    "k", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", _
    "y", "z", "0", "2", "3", "4", "5", "6", "7", "8", "9", "!", "@", _
    "#", "$", "%", "^", "&", "*", "A", "B", "C", "D", "E", "F", "G", "H", _
    "J", "K", "L", "M", "N", "P", "Q", "R", "S", "T", "U", "V", _
    "W", "X", "Y", "Z")
    'CharacterBank = Array("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", _
    ' "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", _
    ' "y", "z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "!", "@", _
    ' "#", "$", "%", "^", "&", "*", "A", "B", "C", "D", "E", "F", "G", "H", _
    ' "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", _
    ' "W", "X", "Y", "Z")
    'Randomly Select Characters One-by-One
    For x = 1 To Length
    Randomize
    str = str & CharacterBank(Int((UBound(CharacterBank) - LBound(CharacterBank) + 1) * Rnd + LBound(CharacterBank)))
    Next x
    'Output Randomly Generated String
    工作表1.Range("A" & last111 + 1).Activate
    工作表1.Range("A" & last111 + 1).Value = str
    str = ""
    Next i
    End Sub
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    On Error GoTo 0 With Cells(Windows(1).ScrollRow, Windows(1).ScrollColumn) CommandButton1.Top = .Top + 10 CommandButton1.Left = .Left + 400 End With
    End Sub

    因為避免用戶看錯密碼, 所以我廢除了 ( i , l , 1 ) 等使人有機會看錯的字符

    稍為解釋一下代碼 : Private Sub CommandButton1_Click() 是當你按下那按鈕時執行的程序 ! 讀取 C1 及 E1 的數值 , 決定產生密碼長度及數量 , 再由 FOR LOOP 隨機生成 密碼字符 , 再輸出至 A 列 最後一行

    至於 Private Sub Worksheet_SelectionChange(ByVal Target As Range) 內的代碼是把 “產生隨機密碼程序” 那按鈕固定位置 , 不會因為 A 列不斷增加而消失

  • ConvertZZ 軟件 (繁簡轉換開源軟件)

    今次介紹的軟件, 或許有很多用家都不佰生 , 舊版本是十分好用, 我自己多數是用來轉換繁簡體字幕檔 ^_^ 用就是 CONVERZ 了, 但舊版已經不再更生了 ! 現在新版本 ConvertZZ 網址 : https://github.com/flier268/ConvertZZ

    經常下載簡體文件的朋友們應該都有這個困擾吧,文件下載下來,常常看到的都是一堆亂碼 亂碼的原因是因為兩國的慣用編碼不同,簡體使用GBK,而繁體使用BIG5,當GBK的文字「直接」看做BIG5時,就會出現亂碼

    一直以來,我慣用的簡繁轉換程式’ConvertZ’,但一直不太喜歡它的設計,為什麼上面總是要有一條Bar在那邊?為什麼開啟要等好幾秒?為什麼它有時候還會轉換失敗?為什麼作者好像都沒再更新了? 於是我開始計畫,意圖取代舊有的ConvertZ,改善這些問題。

    由於是繼承自ConvertZ,因此取名ConvertZZ

    下載連結 : https://github.com/flier268/ConvertZZ/releases

  • 在win 10 使用 adobe acrobat XI 會出現自動閃退解決辦法

    參考網頁來自 adobe support community

    https://community.adobe.com/t5/acrobat/adobe-acrobat-xi-standard-automatically-closes-after-opening/m-p/10698981?page=1#M226305

    只要下載更新升級到 11.0.23 版本就能暫時解決這問題 , 但不知道會不會隨著WIN10的下次更新又會使 ADOBE ACROBAT XI 失效

    下載網址

  • 高危漏洞影响 OpenSSL 1.1.1 的多个版本 , 請盡快升級

    以下內容節錄自 IT 之家 URL : https://www.ithome.com/0/484/097.htm

    OpenSSL 项目发布安全公告称存在一个影响 OpenSSL 1.1.1d, 1.1.1e 和 1.1.1f 的高危漏洞 (CVE-2020-1967),该漏洞可被用于发起 DoS 攻击。

    根据官方对该漏洞的描述,在 TLS 1.3 握手期间或握手之后调用 SSL_check_chain() 函数的服务器或客户端应用可能会导致崩溃,原因是不正确处理”signature_algorithms_cert” TLS 扩展而引起的空指针引用。如果从另一方接收到一个无效或未被识别的签名算法,则会发生崩溃。这可能会被恶意攻击者利用并发起 DoS 攻击。

    该漏洞由 Bernd Edlinger 通过 GCC 中的新静态分析通道 -fanalyzer 发现,并已于2020年4月7日向 OpenSSL 报告。

    对于受影响的 OpenSSL 1.1.1(1.1.1d,1.1.1e 和 1.1.1f)用户,建议尽可能快地升级到 1.1.1g。OpenSSL 1.1.1d 之前的版本不受此漏洞影响。

    更早的版本如 OpenSSL 1.0.2 和 1.1.0 也均未受影响,不过这些版本都不再被支持,也无法再接受更新。建议使用这些版本的用户升级至 OpenSSL 1.1.1。

  • Ubuntu 20.04 LTS 上架 Win10 應用商店

    以下內容轉載自 IT 之家 URL : https://www.ithome.com/0/483/457.htm

    IT之家4月19日消息 Ubuntu 20.04 LTS on Windows 已经上架 Microsoft Store 应用商店,Ubuntu 20.04 on Windows允许使用Ubuntu Terminal并运行Ubuntu命令行实用程序,包括bash,ssh,git,apt等。请注意,Windows 10 S不支持运行此应用程序。

    Ubuntu 20.04 LTS on Windows需要Windows 10 版本 16215.0 或更高版本,支持ARM64、x64体系结构。

    据IT之家了解,要启动Ubuntu 20.04 on Windows,请在命令行提示符(cmd.exe)上使用“ ubuntu2004”,或在“开始”菜单中单击Ubuntu磁贴。

    要使用此功能,首先需要使用“打开或关闭Windows功能”并选择“Windows Subsystem for Linux”,单击“确定”,重新启动,然后使用此应用程序。

    也可以使用Administrator PowerShell提示符执行以上步骤:

    Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

    这个应用会在Windows Subsystem for Linux上安装Ubuntu 20.04 LTS版本。

    请注意,应用程序更新不会更改Ubuntu安装。要升级到新版本,请在Ubuntu Terminal终端中运行do-release-upgrade。

  • Linux 下配置 Let’s Encrypt 免費 SSL 証書方法 及 設定

    其實申請 Let’s Encrypt certificate 有很多方法,
    有很多 API 總有一款能配給到你系統的配置


    https://letsencrypt.org/zh-tw/docs/client-options/

    我自己就用 Linux bash shell :  acme.sh   &
    certbot  client 來申請 SSL 証書

    參考網站 :  

    烧饼博客

    Calos’s Blog

    DEVLOG of andyyou