Search code examples
angularsslhttpsssl-certificateangular-cli

Get angular-cli to ng serve over HTTPS


The following doesn't seem to do anything.

ng serve --ssl true --ssl-key <key-path> --ssl-cert <cert-path>

Creating the Certificate and key by providing them in the default ssl directory still does nothing.

It looks like ng server is completely ignoring the --ssl parameter and keeps saying NG Live Development Server is running on http://localhost:4200.


Solution

  • Angular CLI 6+

    I've updated my own projects so I figured I can now update this answer too.

    You'll now put the path to your key and certificate in your angular.json file as follows:

    {
       "$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",
                           ...
                       }, ...
                   }, ...
               }, ...
           }, ...
       }, ...
    }
    

    And then you can run:

    ng serve --ssl
    

    If you want SSL on by default then you should add a "ssl": true, option immediately below the sslKey and sslCert.

    You can find the angular.json schema at the Angular CLI documentation.

    Old answer for Angular CLI 1.0.0+.

    Angular-CLI now works with the SSL options. Like you've noted, you can manually select which key and cert you'd like to use with the command:

    ng serve --ssl --ssl-key <key-path> --ssl-cert <cert-path>
    

    If you'd like to set a default path for your key and cert then you can go into your .angular-cli.json file adjust the Defaults section accordingly:

    {
        "$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",
                ...
            }, ...
        }, ...
    }
    

    And then you can run:

    ng serve --ssl
    

    If you want SSL on by default then you should add a "ssl": true, option immediately below the sslKey and sslCert.