簡體   English   中英

為Https配置Nginx的困難

[英]Difficulties configuring nginx for Https

我目前正在家庭網絡上配置兩個rapsberry pi。 一個將數據從節點服務器上的傳感器提供給第二個pi(也運行在節點上的Web服務器)。 它們都在nginx代理后面。 經過大量的配置和搜索,我找到了一個可行的解決方案。 Web服務器正在使用dataplicity使其可訪問www。 我不在第二個pi(sensordata的服務器)上使用dataplicity:

server {
  listen 80;
  server:name *ip-address*

  location / {
      proxy_set_header X-forwarded-For $remote_addr;
      proxy_set_header Host $http_host;
      proxy_pass "http://127.0.0.1:3000";
  }
 }

server {
 listen 443 ssl;
 server_name *ip-address*

 ssl on;
 ssl_certificate /var/www/cert.pem
 ssl_certificate_key /var/www/key.pem
 location /{
    add_header "Access-control-allow-origin" *;
    proxy_pass http://127.0.0.1:3000;
 }
}

此配置有效。 但是,僅在我的計算機上。 當嘗試使用ajax請求訪問api時,我從其他計算機上得到ERR_INSECURE_RESPONSE。 證書是自簽名的。非常有用。

編輯:仍然沒有解決此問題。 我也為第二台設備注冊了數據一致性。 這解決了我的問題,但現在通過第三方運行。 將來會對此進行研究。 因此,如果有人對此有答案,請務必告知。

很酷的項目,熱心幫助。

Dataplicity Wormhole將偵聽設備端口80的服務重定向到https://*.dataplicity.io形式的公共URL,並將dataplicity證書放在前面。 由於HTTPS的工作方式,通過dataplicity重定向的端口無法使用HTTPS,因為這意味着我們無法通過dataplicity.io域轉發流量。 無論如何,從設備到Dataplicity的隧道都是加密的。

您是否有理由不選擇在第二個Pi上運行Dataplicity? 雖然您當然可以在本地運行Web服務器,但是如果您只是在第二台設備上安裝了Dataplicity的第二個實例,則這將使跨網絡的訪問變得更加容易和便攜。

您的證書似乎不正確,缺少根證書? (如果您的瀏覽器已經接受了不安全的證書,則可以在您的計算機上使用)。

檢查您的證書是否良好,以下命令必須給出相同的結果:

openssl x509 -noout -modulus -in mycert.crt | openssl md5
openssl rsa -noout -modulus -in mycert.key | openssl md5
openssl x509 -noout -modulus -in mycert.pem | openssl md5

如果一個輸出與另一個輸出不同,則表明證書生成錯誤。

您也可以使用curl直接在計算機上檢查它:curl -v -i https:// yourwebsite

如果輸出的頂部顯示不安全的警告,則說明證書生成錯誤。

上面的帖子看起來不錯。

證書和/或SSL被您的客戶端拒絕。

假設證書本身是公開簽署的(可能沒有),這可能是幾件事情。

日期和時間可能不匹配(證書對系統時鍾敏感)。

如果您的證書是自簽名的,則需要確保將遠程設備配置為接受您的私有根證書。

最后,您可能需要將服務器配置為僅使用現代加密方法。 如果自POODLE攻擊以來,客戶端已經更新,則您的客戶端可能會拒絕一些較舊的方法。

這篇文章應該讓您創建證書https://www.digitalocean.com/community/tutorials/how-to-create-a-self-signed-ssl-certificate-for-nginx-in-ubuntu-16-04 ,盡管我認為您已經做到了。

這篇文章https://unix.stackexchange.com/questions/90450/adding-a-self-signed-certificate-to-the-trusted-list將使您可以將新的私有根證書添加到客戶端的受信任列表中。

最后,建議在Ubuntu中使用SSL配置(來自此處https://www.digitalocean.com/community/tutorials/how-to-secure-nginx-on-ubuntu-14-04 )。

    listen 443 ssl;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
    ssl_prefer_server_ciphers on;
    ssl_dhparam /etc/nginx/ssl/dhparam.pem;
    ssl_certificate /etc/nginx/ssl/nginx.crt;
    ssl_certificate_key /etc/nginx/ssl/nginx.key;

或者,如果您真的被卡住了,請僅將您的帳戶詳細信息告訴我,我將在您的Dataplicity帳戶中放入第二個免費設備:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM