Browse Source

changes to update steps for setting up https

Dr-Swopt 2 months ago
parent
commit
9250806ea4
6 changed files with 42 additions and 65 deletions
  1. 1 0
      .gitignore
  2. 35 1
      README.md
  3. 0 28
      certs/192-168-100-100.nip.io-key.pem
  4. 0 25
      certs/192-168-100-100.nip.io.pem
  5. 4 9
      src/config.ts
  6. 2 2
      src/main.ts

+ 1 - 0
.gitignore

@@ -2,6 +2,7 @@
 /dist
 /node_modules
 /build
+/certs
 
 # Logs
 logs

+ 35 - 1
README.md

@@ -35,7 +35,7 @@ This is a full-stack demonstration of **passwordless authentication using WebAut
 ### 1. Clone or Download the Project
 
 Download this project from Google Drive or clone it if hosted on Git later.
-https://chat.google.com/dm/hDsHMQAAAAE/79WHykPDGEQ/79WHykPDGEQ?cls=10
+https://drive.google.com/file/d/1isU4QjH3Vz30y4SXM2RRt2zgkl02No4j/view?usp=sharing
 ```bash
 cd your-project-directory
 ```
@@ -66,3 +66,37 @@ in  ..\Mobile Authentication Sample\sample-auth-backend run npm run start
 
 
 
+### 🔐 Setting up Trusted Local HTTPS with mkcert
+
+1. Install mkcert
+   powershell> choco install mkcert
+   powershell> mkcert -install
+   (Run PowerShell as Administrator to ensure root CA is installed.)
+
+2. Create a certs folder in your backend directory
+   powershell> cd E:\Task\Mobile Authentication Sample\sample-auth-backend
+   powershell> mkdir certs
+
+3. Generate a trusted certificate
+   powershell> mkcert -cert-file certs\local-cert.pem -key-file certs\local-key.pem localhost 127.0.0.1
+
+   Optional LAN access:
+   powershell> mkcert -cert-file certs\lan-cert.pem -key-file certs\lan-key.pem localhost 127.0.0.1 192.168.1.50
+
+   (Make sure hostname/IP matches certificate SAN.)
+
+4. Update NestJS to use HTTPS
+   ts> const httpsOptions = {
+       key: fs.readFileSync(join(__dirname, '..', 'certs', 'local-key.pem')),
+       cert: fs.readFileSync(join(__dirname, '..', 'certs', 'local-cert.pem')),
+   };
+   ts> const app = await NestFactory.create<NestExpressApplication>(AppModule, { httpsOptions });
+
+5. Restart your browser
+   Access https://localhost:3000 or https://<LAN-IP>:3000 (must match SAN).
+
+Notes:
+- Chrome/Edge trusts Windows root store automatically.
+- Firefox may require manually importing rootCA.pem from mkcert -CAROOT.
+- Always regenerate certs if changing hostnames or LAN IPs.
+

+ 0 - 28
certs/192-168-100-100.nip.io-key.pem

@@ -1,28 +0,0 @@
------BEGIN PRIVATE KEY-----
-MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDkww6zT/7O+Fgy
-w14zsgR4XYStNJHTxoyBYbyqhp6yepClEOe+4a2k5N/gSqU98o/sfpQRZNvQ3Mla
-jxPUEn9J/Os1uwT04XCDLhpwV+MEHUAD6Et5JmuHCmh3XmjlOpupyVCsQZ+3M63Y
-DnWagPzx6K88CeWXLP36Z9xcCjlAL88hWB8zpqbdC/xqr8TS5xT6+WVnLQMe8Gni
-sfrk9um41uYs8ZLKTETlMJWANopoyJfFPgB4Cp8/tsackGn90/TbnBeey9kSqD10
-Y5zg5vQ6iCMHBY9sXCRE487Rngub2CDZIxgchS+fRMOW2DDYt60RDn5L0meb5TAM
-6uRcZov9AgMBAAECggEAEkF2tNyXaxDqiPKKW/nC3ZAo/GGLmajooZKZKcqgc4HQ
-dTvKIrOD1frl2tJaKX1n+umHC3RPDnXwI6fzXyMywUbLxnfsR1aOUgml1n1NApEL
-AMTS8RId1qL//zarjE+HCJ+mLnj2M/qNzwYoYHIWvX9iLJpllhDjG86aCUZPl02S
-vOF2W4RFgEKFLiSoEarMHo8waB/JlKkHIYNarI3Ji3GWwtMmByLIb9kIv+B0ZtEU
-vef2+SBuKCwr2rgM8Z07LEobvEyQP6DCfAOPR3O36zVy+MuW+hD0WQH914wgMT0N
-FmhzKuimoNkh57Tlbs9oLAgh6GTQ4u2r38A55Ip0gQKBgQD/0qzCUmgSn/vSZPGA
-oZYA8luqp98l3g+TCBnrKZBVSB1MYkto2eAde6f9i+aiz66A5JxupUmr/PNCYG8Y
-X91K2VdrQtwnc6W6s/jAcCOCFfqeVDCaiAqkUHm9ayV/YfduNbd7WK4sCIZHfwJI
-GzEViPSIWVkDKISfcfTzxjWU0QKBgQDk65aMT9ZE6oj/A2bVjbBXnSjLITD/ygB4
-W2cBiqAjaEAZ0f7qGLdcDMDa3wJ0aMQoWkg+p85lrC62UH9Q8rvKJHgqbiFmCRSd
-u7daYlLlOVZ91XW215hbV9xeqdNPj6wcfcC0ldZZ9VL1DWtXedaGhmwZXCrRB9v5
-L/RkETr/bQKBgQDxYUpKzFCQik2kdkR813pfCE6/1keyRjWxyOoTvpMGNNYYNYLr
-uvBBQWT/0lpa8tS3n32O1PyPgEvTLISGniWCM1LNzTdHLlKIuLmUcfq/Cpf/fnah
-yI0p/xjvRkMKT1iUr7ChfMpSl/SDT27KtIV6yU/Zu1xGo5uHipHS1gnGkQKBgQDZ
-K3qGIBNZC9rtem+rNqDNbWXO1u0iLKOniqa8uqNTE8qD9ElOEiaZJ+wpd5lfkChP
-U97nudA/ekpSYSl3RN/MVC6/qfz7TLAHN5cpItAbb/rSo5fp3rxGI6MHFztFZjpU
-SSRw7RkN/IM3wQRNV2Oh+ZJBuMNRzI/t5YWHDSWYPQKBgGUJWicKY2cBBT6sYwEt
-NEaH6kRJZGkLZxnG8COz4i892lDfU9jas0bXfwR+SivATfE/LLaGPhH2nOZZN7il
-AGcXJwVPS6CkRFs9gm+EctIsqoPQ6BQcy2We1ByFQjFUocgdvV5Cg4+FuemUr/jv
-SPlhWXSfcjfH3IhuquYfIEdv
------END PRIVATE KEY-----

+ 0 - 25
certs/192-168-100-100.nip.io.pem

@@ -1,25 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIEQTCCAqmgAwIBAgIRAIEsETnDfwerdPk7WobrAw4wDQYJKoZIhvcNAQELBQAw
-eTEeMBwGA1UEChMVbWtjZXJ0IGRldmVsb3BtZW50IENBMScwJQYDVQQLDB5TT0RD
-MTZcZW56b0BTT1BDLTIzRDEwMSAoRW56bykxLjAsBgNVBAMMJW1rY2VydCBTT0RD
-MTZcZW56b0BTT1BDLTIzRDEwMSAoRW56bykwHhcNMjUwOTI2MDMyMTI5WhcNMjcx
-MjI2MDMyMTI5WjBSMScwJQYDVQQKEx5ta2NlcnQgZGV2ZWxvcG1lbnQgY2VydGlm
-aWNhdGUxJzAlBgNVBAsMHlNPREMxNlxlbnpvQFNPUEMtMjNEMTAxIChFbnpvKTCC
-ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOTDDrNP/s74WDLDXjOyBHhd
-hK00kdPGjIFhvKqGnrJ6kKUQ577hraTk3+BKpT3yj+x+lBFk29DcyVqPE9QSf0n8
-6zW7BPThcIMuGnBX4wQdQAPoS3kma4cKaHdeaOU6m6nJUKxBn7czrdgOdZqA/PHo
-rzwJ5Zcs/fpn3FwKOUAvzyFYHzOmpt0L/GqvxNLnFPr5ZWctAx7waeKx+uT26bjW
-5izxkspMROUwlYA2imjIl8U+AHgKnz+2xpyQaf3T9NucF57L2RKoPXRjnODm9DqI
-IwcFj2xcJETjztGeC5vYINkjGByFL59Ew5bYMNi3rREOfkvSZ5vlMAzq5Fxmi/0C
-AwEAAaNrMGkwDgYDVR0PAQH/BAQDAgWgMBMGA1UdJQQMMAoGCCsGAQUFBwMBMB8G
-A1UdIwQYMBaAFEkrR51nmFN4NAN3UzC81h1OHyV6MCEGA1UdEQQaMBiCFjE5Mi0x
-NjgtMTAwLTEwMC5uaXAuaW8wDQYJKoZIhvcNAQELBQADggGBAG66LuEMZQJVrGgL
-pk0L9UoU7dHk21Z8rGC2bdcYlhkQj/2RchZvncy37ZSA2oFCLUmqRBZ6vhrHOmi2
-cCIFrx0f2VZEHTks1z5zWomNJ0m/NFy5Q1+JRibcuj+HT1lVnHk1t2Kaj+MsY8cA
-wOXNdckHvGvOap7HmuIE7MewQPKUKNuImjJu36+L0yV8wwcCXvVcgX8AV7CEJDT1
-mK5CcHScM8TS8FobtZg/kQaqsICSj6oMrMcDmXFZuzvDZQ29u7RrMepSmk76t7kx
-oQdtuW9na8S/RHS8JqSVAysOxsCf1+R7f8suamfcmIQhFhtwt96DAvnFut8AY4P/
-nSVtWXS8sVTXzhN0LJ3NWGRSjE4mxVUHgnZynwNd0xoiKQdHybrmz3O5vcyp8NU9
-0JZPYlas5gVYJcZi19q21WpLo88UFhrY3IV2qnYUpXQrhhG419zq2U7vR8M9JnGa
-4BzVkDB8+ISbaz7wyJOA9PpSYzWiyhSHlZBBSGb0FdHiDwB+8Q==
------END CERTIFICATE-----

+ 4 - 9
src/config.ts

@@ -1,12 +1,7 @@
-// export const serverConfig = {
-//   exposedUrl: 'https://36a90a13a4c7.ngrok-free.app',
-//   rpName: 'My App',
-//   rpId: '36a90a13a4c7.ngrok-free.app',
-//   origin: 'https://36a90a13a4c7.ngrok-free.app',
-// };
+
 export const serverConfig = {
-  exposedUrl: 'https://192-168-100-100.nip.io:3000',
+  exposedUrl: 'https://localhost:3000',
   rpName: 'My App',
-  rpId: '192-168-100-100.nip.io',
-  origin: 'https://192-168-100-100.nip.io:3000',
+  rpId: 'localhost',
+  origin: 'https://localhost:3000',
 };

+ 2 - 2
src/main.ts

@@ -9,8 +9,8 @@ import session from 'express-session';
 async function bootstrap() {
   const certsDir = join(__dirname, '..', 'certs');
   const httpsOptions = {
-    key: fs.readFileSync(join(certsDir, '192-168-100-100.nip.io-key.pem')),
-    cert: fs.readFileSync(join(certsDir, '192-168-100-100.nip.io.pem')),
+    key: fs.readFileSync(join(certsDir, 'local-key.pem')),
+    cert: fs.readFileSync(join(certsDir, 'local-cert.pem')),
   };
 
   // const app = await NestFactory.create<NestExpressApplication>(AppModule);