Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Q102. [團隊技能題組] 環境 #19

Open
wildwindjen opened this issue Mar 16, 2017 · 5 comments
Open

Q102. [團隊技能題組] 環境 #19

wildwindjen opened this issue Mar 16, 2017 · 5 comments

Comments

@wildwindjen
Copy link
Contributor

wildwindjen commented Mar 16, 2017

起一個 AWS ec2。把你的 nodejs/express 部署到這裡。並且支援 HTTPS。

a. 使用 https://www.ssllabs.com/ssltest/analyze.html 分析安全等級。怎麼讓他到 A?
b. 簡述一下團隊的環境架構與部署機制,使用到哪些工具?為什麼?
c. 說說 SSL/TLS 這個安全機制是如何運作。

答題時間: 24 hr

@PenguinRun
Copy link

PenguinRun commented May 10, 2017

「於2017/05/11開始答題」

a. 使用 https://www.ssllabs.com/ssltest/analyze.html 分析安全等級。怎麼讓他到 A?
ans: 使用let's encrypt來申請SSL後就取得A。

b. 簡述一下團隊的環境架構與部署機制,使用到哪些工具?為什麼?
ans:

目前團隊的環境是透過aws-ec2來進行建置,並在ec2上建置linux的作業系統,後端server則使用node js去建置。

團隊環境:

  • 主機: aws-ec2
  • OS: linux
  • 後端語言: node js
  • 前端語言: html + css
  • DB: NoSQL-mongo
  • API規則: restfulAPI

流程:透過gitlab 並結合 node的 pm2 套件 讓整個後端server能夠常駐運行。

工具:gitlab + pm2

會使用到gitlab最主要是因為它會隱藏開發者的code,並不會讓它公開看到。而使用pm2使希望我們的後端server能夠常駐運行。

「2017/05/23 答題完成」

@wildwindjen
Copy link
Contributor Author

wildwindjen commented May 24, 2017

a. 回答得有點簡單。中間總該遇到些問題,如何克服的之類吧。
b. 部署流程可以說明得再詳細一點,用情境舉例最容易說明。

為了確保你們真的懂,而不是只會用工具,我補上 c 題目。

@YenChunchen
Copy link

a.回答得有點簡單。中間總該遇到些問題,如何克服的之類吧。

  1. certbot設定不順利
    let encrypt中,要設定certbot相關的東西,一開始以為只要git clone下來,並按照官方的只是去運作就行。殊不知還需要額外安裝python才行,這是因為certbot需要ptyhon才能運行。
    且在運行certbot並申請簽證時,沒有仔細去看他要我們運行的動作,導致以為它好像不給申請似的

  2. 安裝錯誤
    在安裝certbot及python時,似乎沒有安裝完整,所以在運行certbot相關指令時也有跳出相關的錯誤。而這部份在重新安裝certbot跟python後,問題就解決了

b.部署流程可以說明得再詳細一點,用情境舉例最容易說明。

1.建立EC2:

  • 選擇作業系統及主機方案
  • 選擇可以連入主機的方式(SSH,HTTP,HTTPS),http and https需設定允許任何位置(後續其它人才能使用你的server)
  • 申請一個靜態ip關聯到主機(使主機ip固定)

2.建立server:

  • 安裝npm,node.js.git
  • 使用gitlab clone專案下來(gitlab有免費的private專案可使用,程式碼不公開)
  • 使用pm2啟動專案的server.js檔(使server常駐)

c.SSL/TLS 這個安全機制是如何運作

  • 1.server生成公鑰,私鑰
  • 2.server把公鑰及server相關資訊送給憑證中心認證,成功認證取得憑證SSL公鑰,發給server
  • 3.client可透過browser中的憑證清單去核對server憑證身份,成功即可建立HTTPS

EX:A(client) and B(server)要建立https連線:
A告訴B自己的可以接受的加密演算法...
B回應協商後要使用哪些演算法結果及自己的憑證
A收到憑證後和自己有的憑證清單核對,確認B身份
A成功認證後透過B的公鑰使用剛剛協商的演算法加密內容,傳送給B
B收到後可透過自己的私鑰解密剛才的內容,防止第三方竊聽

@wildwindjen
Copy link
Contributor Author

b. 部署機制這邊你們有點誤解了。這邊是要你們說明「未來開發好的程式要怎麼上到線上環境」,所以你們要設計這個機制,方案很多種,為什麼。

c. 「client可透過browser中的憑證清單去核對server憑證身份」 這邊還可以說明得更仔細一點嗎?ex: browser 的憑證清單怎麼來?為什麼可以利用憑證清單核對?

@YenChunchen
Copy link

b. 部署機制這邊你們有點誤解了。這邊是要你們說明「未來開發好的程式要怎麼上到線上環境」,所以你們要設計這個機制,方案很多種,為什麼。

  • 目前是透過手動push到git上再clone到ec2主機上,執行pm2使server上線,後續會再研究CI的方式讓程式自動部署上線

c. 「client可透過browser中的憑證清單去核對server憑證身份」 這邊還可以說明得更仔細一點嗎?ex: browser 的憑證清單怎麼來?為什麼可以利用憑證清單核對?
1.browser 的憑證清單怎麼來?

  • 各大瀏覽器會有預設的多家憑證中心的CA根憑證(憑證中心向各大瀏覽器申請),也可以使用者自行添加信任的憑證到憑證清單中

2.為什麼可以利用憑證清單核對?

  • 因為憑證清單中的憑證多是由各大具有公信力得憑證中心所發放有效的憑證,證明server端身份

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants