在localhost上设置(https)用于流星开发的SSL

met*_*uzz 18 cookies ssl ssl-certificate node.js meteor

如何创建自签名SSL证书以在mac 10.9上的本地服务器上使用?

我要求我的localhost充当 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.

Aks*_*hat 22

使用http-proxy应用程序的ontop,在dev/prod模式下运行的快速简便的解决方案.

1)加入tarang:ssl包装

meteor add tarang:ssl
Run Code Online (Sandbox Code Playgroud)

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")
       }
    });
});
Run Code Online (Sandbox Code Playgroud)

然后启动你的应用程序并加载https://localhost:6000.请确保不要将您的端口与https和http混淆,因为它们是单独提供的.

有了这个,我假设你知道如何创建自己的自签名证书,有很多资源如何做到这一点.以防万一这里有一些链接.

自签名证书的替代方案:最好为您的应用程序域使用官方证书,并用于/etc/hosts 在本地计算机上创建环回.这是因为它必须在dev和prod之间切换证书是乏味的.

  • 不适合我.使用`meteor`命令启动app,应用程序以`localhost:3000'开头.无法连接'https:// localhost:6000'.虽然它显示`port 6000`在我用`netstat`检查时正在监听`node`.有没有人面临类似的问题? (2认同)

Omi*_*rai 19

或者你可以只使用ngrok移植前进:)

1)启动你的服务器(即在localhost:3000)

2)从命令行启动ngrok:./ ngrok http 3000

应该为您提供从任何设备访问的http和https网址


reb*_*00x 5

其他解决方案是使用NGINX.假设您的本地网站在端口3000上运行,则在Mac El Capitan上测试以下步骤:

1.将主机添加到本地计算机:

编辑主机文件: vi /etc/hosts

为您的本地开发域添加一行: 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消息.

这是默认配置,所以现在你必须设置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;
        }
Run Code Online (Sandbox Code Playgroud)

重启nginx:

 sudo nginx -s stop
 sudo nginx 
Run Code Online (Sandbox Code Playgroud)

现在您应该可以访问https://dev.yourdomain.com