在本地主机上设置 (https) SSL 用于流星开发
Setup (https) SSL on localhost for meteor development
如何创建自签名 SSL 证书以在 mac 10.9 上的本地服务器上使用?
我需要我的本地主机作为 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。
在 dev/prod 模式下工作的快速简便的解决方案,在您的应用程序上使用 http-proxy
。
1) 在tarang:ssl
包中添加
meteor add tarang:ssl
2) 将您的证书和密钥添加到应用中的目录 /private
,例如 /private/key.pem
和 /private/cert.pem
然后在你的 /server 代码中
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 混淆,因为它们是分开提供的。
有了这个,我假设您知道如何创建自己的自签名证书,关于如何执行此操作的资源很多。为了以防万一,这里有一些链接。
- http://www.akadia.com/services/ssh_test_certificate.html
- https://devcenter.heroku.com/articles/ssl-certificate-self
自签名证书的替代方案:最好为您的应用域使用官方证书并使用 /etc/hosts
to create a loopback on your local computer too。这是因为必须在开发和生产之间切换证书很乏味。
或者您可以只使用 ngrok 转发 :)
1) 启动您的服务器(即在 localhost:3000)
2) 从命令行启动 ngrok:./ngrok http 3000
应该可以让您从任何设备访问 http 和 https 网址
其他解决方案是使用 NGINX。以下步骤在 Mac El Capitan 上进行了测试,假设您的本地网站在端口 3000 上运行:
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 文件:
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
如何创建自签名 SSL 证书以在 mac 10.9 上的本地服务器上使用?
我需要我的本地主机作为 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。
在 dev/prod 模式下工作的快速简便的解决方案,在您的应用程序上使用 http-proxy
。
1) 在tarang:ssl
包中添加
meteor add tarang:ssl
2) 将您的证书和密钥添加到应用中的目录 /private
,例如 /private/key.pem
和 /private/cert.pem
然后在你的 /server 代码中
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 混淆,因为它们是分开提供的。
有了这个,我假设您知道如何创建自己的自签名证书,关于如何执行此操作的资源很多。为了以防万一,这里有一些链接。
- http://www.akadia.com/services/ssh_test_certificate.html
- https://devcenter.heroku.com/articles/ssl-certificate-self
自签名证书的替代方案:最好为您的应用域使用官方证书并使用 /etc/hosts
to create a loopback on your local computer too。这是因为必须在开发和生产之间切换证书很乏味。
或者您可以只使用 ngrok 转发 :)
1) 启动您的服务器(即在 localhost:3000)
2) 从命令行启动 ngrok:./ngrok http 3000
应该可以让您从任何设备访问 http 和 https 网址
其他解决方案是使用 NGINX。以下步骤在 Mac El Capitan 上进行了测试,假设您的本地网站在端口 3000 上运行:
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 文件:
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