2015-01-15 23 views
15

如何在mac 10.9上創建本地服務器上使用的自簽名SSL證書?在localhost上爲流星開發設置(https)SSL

我需要我的本地主機作爲https://localhost

我使用LinkedIn的API。這裏解釋了需要本地主機上的ssl的功能。 https://developer.linkedin.com/documents/exchange-jsapi-tokens-rest-api-oauth-tokens

簡而言之,在客戶端授權我的應用程序訪問其數據後,linkedin會向客戶端發送不記名令牌。 linkedin的內置JavaScript庫會自動將此cookie發送到我的服務器/後端。這個json文件信息用於用戶認證。

但是,如果服務器不是https,linkedin不會發送私人cookie。

+0

你能澄清你爲什麼需要這個?我不知道如何從他們的本地機器加密流量到本地計算機上受益... –

+0

我已詳細闡述。我也有一個指向亞馬遜免費層服務器的域名。我用mup包部署它。值得考慮的是我在亞馬遜服務器上開發或者是亞馬遜服務的原則和我的本地主機服務是一樣的。即,本地主機和另一臺服務器之間沒有重大的重新配置 – meteorBuzz

+2

我認爲這可能對你有用https://gist.github.com/micho/1712812有一篇文章中有關如何設置自簽名ssl的鏈接要點的評論也是如此。 –

回答

19

使用http-proxy ontop上的應用程序ontop開發快速簡單的解決方案,在dev/prod模式下工作。

1)添加在tarang:ssl

meteor add tarang:ssl 

2)證書和密鑰添加到一個目錄在你的應用/private,如/private/key.pem/private/cert.pem

然後在你的/服務器代碼

Meteor.startup(function() { 
    SSLProxy({ 
     port: 6000, //or 443 (normal port/requires sudo) 
     ssl : { 
      key: Assets.getText("key.pem"), 
      cert: Assets.getText("cert.pem"), 

      //Optional CA 
      //Assets.getText("ca.pem") 
     } 
    }); 
}); 

然後啓動您的應用程序並加載https://localhost:6000。請務必不要混淆https和http,因爲它們是單獨提供的。

有了這個,我假設你知道如何創建自己的自簽名證書,如何做到這一點有大量的資源。以防萬一這裏有一些鏈接。

自簽名的證書一種替代方案:它可能是最好使用官方認證爲您的應用程序域並使用/etc/hoststo create a loopback on your local computer too。這是因爲它必須在dev和prod之間切換證書。

+0

對於我來說購買證書是有道理的,因爲在某些時候我必須購買證書。我將設立亞馬遜環境並在那裏發展。我會回來引用你的答案和流星包,並讓你知道我如何繼續。感謝您的詳細步驟。 – meteorBuzz

+0

我已經安裝了軟件包並在終端中運行了「sudo meteor --port https:// localhost:443」,並且該應用程序在localhost上運行完美:443 我現在已經成功接收了JavaScript API持有者令牌。大包裝! – meteorBuzz

+0

問題。什麼是ca:Assets.getText(「ca.pem」)包含鏈(捆綁)證書的正確語法?謝謝Akshat – meteorBuzz

13

或者你可以只用ngrok端口轉發:)

1)啓動服務器(即位於localhost:3000)

2)命令行ngrok開始:./ngrok HTTP 3000

這應該給你http和https網址從任何設備訪問

+0

一個簡單的解決方案 –

+0

不適用於我的所有工作流程。但對於簡單的使用情況很方便。 –

+0

我必須做'./ngrok http 3000'這個工作。 – AshHimself

4

其他解決方案是使用NGINX。以下步驟在Mac El Capitan上進行測試,假設您的本地網站運行在端口3000上:

1。主機添加到本地機器上:

編輯您的主機文件:vi /etc/hosts

添加一行爲您的本地dev的域:127.0.0.1 dev.yourdomain.com

刷新緩存dscacheutil -flushcache

現在你應該可以用http://dev.yourdomain.com:3000

2.創建一個自簽名的SSL喜歡這裏解釋:http://mac-blog.org.ua/self-signed-ssl-for-nginx/

3.安裝nginx的,並將其配置交通HTTPS映射到本地網站:

brew install nginx

sudo nginx

現在,你應該能夠達到http://localhost:8080並獲得一個Nginx消息。

這是默認的conf所以現在你必須設置HTTPS CONF:

編輯您的conf文件:

vi /usr/local/etc/nginx/nginx.conf

取消對HTTPS服務器部分,然後更改以下行:

server_name dev.yourdomain.com;

將剛創建的證書放入:

ssl_certificate /path-to-your-keys/nginx.pem;

ssl_certificate_key /path-to-your-keys/nginx.key;

變化這一個位置的部分:

location/{ 
      proxy_pass   http://localhost:3000; 
      proxy_set_header Host    $host; 
      proxy_set_header X-Real-IP  $remote_addr; 
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
      proxy_set_header X-Client-Verify SUCCESS; 
      proxy_set_header X-Client-DN  $ssl_client_s_dn; 
      proxy_set_header X-SSL-Subject $ssl_client_s_dn; 
      proxy_set_header X-SSL-Issuer  $ssl_client_i_dn; 
      proxy_read_timeout 1800; 
      proxy_connect_timeout 1800; 
     } 

重啓nginx的:

sudo nginx -s stop 
sudo nginx 

現在你應該能夠訪問https://dev.yourdomain.com