[Linux] SSH Manual – SSH 使用指南

Intro RFC4252 – The Secure Shell (SSH) Authentication Protocol SSH – OpenBSD manual page server ssh_config — OpenSSH SSH client configuration files ssh $ ssh user@host.com ssh [-46AaCfGgKkMNnqsTtVvXxYy] [-B bind_interface] [-b bind_address] [-c cipher_spec] [-D [bind_address:]port] [-E log_file] [-e escape_char] […]

[HTTPS] Two-way SSL – SSL雙向驗證 on Nginx

Intro Two-way SSL即Server端也要求Client端提供certificate做驗證,handshake流程上是Client端先驗證Server端後才換Server端驗證Client端。 Client端憑證 Client端提供終端憑證並設定使用該憑證對應的Private Key; Server端設定Client端的CA憑證,以用於驗證Client端提供的終端憑證。 [Server] TLS/SSL憑證(Certificate)常用指令 – 製作CSR Nginx設定 Nginx可以在Server block上啟用驗證Client端certificate: server { listen 443 ssl; ssl_certificate /etc/nginx/ssl/public.crt; ssl_certificate_key /etc/nginx/ssl/private.rsa; # Client certificate verification ssl_client_certificate /etc/nginx/ssl/client_ca.pem; ssl_verify_client on; server_name api.my_domain.com; location / { # … } } […]

[AWS] VPC 設定指南 (NAT Gateway)

Intro AWS VPC為提供完整雲端網路架構設定。 VPC NAT Gateway AWS – VPC with Public and Private Subnets (NAT) 以上官網文件與架構圖提供完整概念。 NAT Subnet (僅內網IP可出NAT) 設定流程 建立VPC 建立一個外網subnet(搭配建立Route Table 0.0.0.0/0接外網IGW),與一個內網subnet(搭配建立Route Table 0.0.0.0/0先不設定),而同一個VPC下兩個subnet是接通的(各自Route Table的共同VPC CIDR接local) 建立一個NAT Gateway(會有一組EIP)且建在外網subnet中。 完成建立NAT Gateway後,再次設定內網subnet搭配的Route Table,增加 0.0.0.0/0接此NAT Gateway 以上網路架構,內網subnet(即NAT Subnet )下的EC2出Internet都會用NAT Gateway的EIP出去。

[OS] MacOS 基本使用架構與環境指南

Intro MacOS雖然是封閉系統,但這年頭應該很難不用到Mac筆電。 使用了Mac筆電意味著BIOS全部走Mac系列。 開機區 MacOS走UEFI,開機時按住指定鍵組: Option: 列出可開機磁區供選擇(如Bootcamp Windows),亦支援Windows開機區。 Command+R: 進入修復工具,包含磁碟工具程式與重新安裝OS X。 重灌 目前MacOS版本的修復工具已有線上OS直接下載安裝支援,連上網路即可只接重新安裝。全新安裝可先清除磁區再安裝。 Windows with MacOS Bootcamp 建議的安裝方式,在MacOS的Bootcamp(啟動切換輔助程式)工具程式分割與引導安裝Windows。目前版本上MacOS還是會每次下載驅動程式,其只需要分割出一個Partition供Windows使用即可。 觸控板捲軸反向問題 以下為原生Bootcamp解法,亦可裝第三方驅動程式解決 Bootcamp的Windows可以在右下角Bootcamp控制台做鍵盤與觸控板設定,另外觸控板反向驅動如果Windows設定內也沒有則可以透過修改登錄檔: 找到觸控板的裝置識別碼 (可以透過Windows觸控板設定更多內容 > 詳細資料 > 屬性:選裝置識別碼或路徑) 登錄檔修改(regedit)內搜尋或找到HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Enum \ HID \ {裝置識別碼} \ ??? […]

[Dict] Golden Dict 跨平台多格式支援開源字典

Intro Golden Dict官網 Golden Dict GitHub 字典來源 – StarDict Dictionaries 中文字典 – 字典來源 – StarDict Dictionaries 安裝 Windows 直接至官網Download頁面下載即可。 MacOS 官方GitHub Wiki:Early Access Builds for Mac OS X 字典 字典檔的Source可以參考Intro連結。 字典的安裝預設路徑: ./GoldenDict/content 安裝完成後即可Rescan取得進行設定。 MacOS可以進入程式套件資料夾內MacOS/content加入路徑設定掃描

[Apache] PHP + Apache 環境指南 (libapache-mod-php) on Ubuntu

Intro 雖然Nginx已經…如要架設Apache,可以使用Apache mod PHP去介接PHP(目前Apache不使用PHP-FPM)。 安裝 快速LAMP安裝檔 安裝Apache: $ sudo apt-get install apache2 安裝Apache mod PHP $ sudo apt-get install libapache2-mod-php PHP版本切換 Ubuntu Manpage: a2enmod, a2dismod Ubuntu系列使用Aapche指令工具a2dismod與a2enmod切換,省去修改零散設定檔。基本上版本支援已裝的libapache2-mod-php各版本: $ sudo a2dismod php7.0 $ sudo a2enmod php5.6 Apache MOD PHP 設定要至/etc/php/apache2/ Server執行使用者 Apache的執行使用者的設定檔為/etc/apache2/envvars: […]

[Discuz!] 基本架構與環境建置指南 – Discuz!X系列

Intro 官方目前似乎只介紹到X3.2版本,可以參考Discuz! G雲碼專案或官方論壇,同期已經到x3.4。 PHP 相容 x3.2含以前支援PHP 5.6,不支援PHP 7.2 x3.3支援PHP 7.2 MeriaDB 相容性問題 Discuz!在判斷相容MySQL版本目前是使用單純的字串比較,如install\include\install_function.php內: ($dbver > ‘4.1’ ? ” ENGINE=$type DEFAULT CHARSET=”.DBCHARSET : ” TYPE=$type”); 而$dbver一般皆由各version()函式個別從原生mysql_get_server_info()函式取得,所以MeriaDB可能會回傳如10.1.38-MariaDB-cll-lve,而造成比對後是小於4.1版本。 Install修正 Install部分主要使用install\include\install_mysql.php作為$db全域變數,所以修改: function version() { return ‘5.6’; // 直接指定回傳版本 // return mysql_get_server_info($this->link); } 其他修正 Install完後,論壇的使用上還是會有MySQL語系語法判定錯誤問題,各程式各自有function […]

[NodeJS] NodeJS Guide – 基礎環境指南

Intro NodeJS官網 各平台依照指示下載安裝即可。 Get Started 安裝NodeJS:Debian/Ubuntu Installation instructions 撰寫一個app.js檔for web: How do I start with Node.js after I installed it? 按照上述,$ node app.js運行web server。 訪問http://127.0.0.1:3000/,也可以改hostname為內外網IP對外測試。 反向代理 Reverse Proxy 可以使用nginx做反向代理NodeJS App,如上述3000port本地web app,nginx反向代理設定範例如下: server { listen 80; server_name _; location / { […]

[HTTP] Content-Disposition 中文解碼支援所有瀏覽器

Intro 非英文語系檔名下載要支援多瀏覽器需要特別處理一下。 目標是達到Google Chrome, FireFox, Edge, IE以及更多的瀏覽器皆能支援。 Content-Disposition – HTTP | MDN 解決方法 使用filename*並遵循RFC 5987編碼標準即可,格式範例: Content-Disposition: attachment; filename=%E4%B8%AD%E6%96%87.txt; filename*=UTF-8”%E4%B8%AD%E6%96%87.txt; PHP sample code: $filename = rawurlencode(‘中文檔名File測試’); header(“Content-Disposition: attachment; filename={$filename}{$extension}; filename*=UTF-8”{$filename}{$extension};”);