如何创建自签名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。
答案 0 :(得分:21)
使用应用程序的http-proxy
on {/ p>在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/hosts
to create a loopback on your local computer too。这是因为在dev和prod之间切换证书很乏味。
答案 1 :(得分:19)
或者您可以使用ngrok移植前进:)
1)启动你的服务器(即在localhost:3000)
2)从命令行启动ngrok:./ ngrok http 3000
应该为您提供从任何设备访问的http和https网址
答案 2 :(得分: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;
}
重新启动nginx:
sudo nginx -s stop
sudo nginx
现在您应该可以访问https://dev.yourdomain.com
了