以下代码似乎没有任何作用。
ng serve --ssl true --ssl-key <key-path> --ssl-cert <cert-path>
创建证书和密钥并将它们提供到默认的ssl目录中仍然没有作用。看起来 `ng server` 完全忽略了 `--ssl` 参数,并且一直显示 `NG Live Development Server is running on http://localhost:4200.`。
以下代码似乎没有任何作用。
ng serve --ssl true --ssl-key <key-path> --ssl-cert <cert-path>
创建证书和密钥并将它们提供到默认的ssl目录中仍然没有作用。我已经更新了自己的项目,所以我想现在也可以更新这个答案。
现在,您需要在angular.json文件中按以下方式设置密钥和证书的路径:
{
"$schema": "./node_modules/@angular/cli/lib/config/schema.json",
"projects": {
"<PROJECT-NAME>": {
"architect": {
"serve: {
"options": {
"sslKey": "<relative path from angular.json>/server.key",
"sslCert": "<relative path from angular.json>/server.crt",
...
}, ...
}, ...
}, ...
}, ...
}, ...
}
接着你可以运行:
ng serve --ssl
如果您想默认启用 SSL,则应在 sslKey 和 sslCert 下方立即添加 "ssl": true, 选项。ng serve --ssl --ssl-key <key-path> --ssl-cert <cert-path>
如果您想设置默认路径来存储您的密钥和证书,则可以进入您的.angular-cli.json文件并相应地调整“Defaults”部分:
{
"$schema": "./node_modules/@angular/cli/lib/config/schema.json",
"defaults": {
"serve": {
"sslKey": "<relative path from .angular-cli.json>/server.key",
"sslCert": "<relative path from .angular-cli.json>/server.crt",
...
}, ...
}, ...
}
然后你可以运行:
ng serve --ssl
如果您希望默认启用SSL,则应在sslKey和sslCert下方立即添加一个"ssl": true,选项。
--ssl
或者"serve": {
"builder": "@angular-devkit/build-angular:dev-server",
"options": {
"browserTarget": "someapp:build",
"ssl": true
},
并且会为您自动生成SSL证书。
然后,要使Chrome接受本地主机的自签名证书,请设置此标志:chrome://flags/#allow-insecure-localhost
您还需要将证书导入到可信根证书中。为此,请在Chrome顶部单击证书错误,然后:
证书(无效)
详细信息
选项卡复制到文件...
inetcpl.cpl
内容
选项卡证书
受信任的根证书颁发机构
选项卡导入
按钮ng serve --ssl
请注意,该证书仅有效期为一个月。在那一个月结束时,您将难以找到解决方案,但我已经经历过这种情况,这里有解决方法
angular.json
文件中。希望这能帮助许多新的 Angular 开发人员。 - Heike--ssl
。ng serve --ssl
工作正常,它将自动为您创建证书。在Chrome浏览器上进行了测试。它会显示“不受信任的连接”,但只需继续即可。
希望这可以帮助到您
chrome://flags/#allow-insecure-localhost
FTW - Rubens Farias提醒一下,在Angular6中,您需要将配置放在选项中(即angular.json文件中):
"serve": {
"builder": "@angular-devkit/build-angular:dev-server",
"options": {
"browserTarget": "app:build",
"ssl": true,
"sslKey": "path to .key",
"sslCert": "path to .crt"
},
...
}
非常简单的解决方案来自此页面
npm install browser-sync --save-dev
ng serve --ssl true --ssl-key ./node_modules/browser-sync/certs/server.key --ssl-cert ./node_modules/browser-sync/certs/server.crt
快速而大胆) 刚在我的Angular CLI 6.2.3项目中使用它
# Step 1: Root SSL certificate
openssl genrsa -des3 -out rootCA.key 2048
openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 1024 -out rootCA.pem
# Step 2: Trust the root SSL certificate
# Step 3: Domain SSL certificate
[req]
default_bits = 2048
prompt = no
default_md = sha256
distinguished_name = dn
[dn]
C=US
ST=RandomState
L=RandomCity
O=RandomOrganization
OU=RandomOrganizationUnit
emailAddress=hello@example.com
CN = localhost
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names
[alt_names]
DNS.1 = localhost
openssl req -new -sha256 -nodes -out server.csr -newkey rsa:2048 -keyout server.key -config <( cat server.csr.cnf )
通过之前创建的根SSL证书,发出证书签名请求以创建localhost的域证书。输出结果是一个名为server.crt的证书文件。
openssl x509 -req -in server.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out server.crt -days 500 -sha256 -extfile v3.ext
# Step 4 Use your new SSL certificate
现在,您已经准备好使用HTTPS来保护本地主机。将server.key和server.crt文件移动到服务器上的可访问位置,并在启动服务器时包含它们。
"serve": {
"builder": "@angular-devkit/build-angular:dev-server",
"options": {
"browserTarget": "project-falcon:build",
"ssl": true,
"sslKey": "src/assets/sslcertificate/server.key",
"sslCert": "src/assets/sslcertificate/server.crt"
}
}
ng serve -o
参考资料
您是正确的。当前实现未考虑ssl配置选项。我已经创建了一个pull request 来解决这个问题。但是,在撰写本文时,它还没有被合并到主分支。
Angular CLI 1.0.0+.
使用ng serve --ssl 1 --ssl-key {{key-path}} --ssl-cert {{cert-path}}命令。
Angular CLI 6+
使用ng serve --ssl true --sslKey {{key-path}} --sslCert {{cert-path}}命令。
将{{*-path}}中的值更改为相应的值。
"serve": {
"builder": "@angular-devkit/build-angular:dev-server",
"configurations": {
"development": {
"browserTarget": "blank16:build:development",
"ssl": true,
"sslKey": "localhost.key",
"sslCert": "localhost.crt"
}
},
"defaultConfiguration": "development"
},