Selaa lähdekoodia

changes to update steps for setting up https

Dr-Swopt 3 kuukautta sitten
vanhempi
commit
9250806ea4
6 muutettua tiedostoa jossa 42 lisäystä ja 65 poistoa
  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
 /dist
 /node_modules
 /node_modules
 /build
 /build
+/certs
 
 
 # Logs
 # Logs
 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
 ### 1. Clone or Download the Project
 
 
 Download this project from Google Drive or clone it if hosted on Git later.
 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
 ```bash
 cd your-project-directory
 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 = {
 export const serverConfig = {
-  exposedUrl: 'https://192-168-100-100.nip.io:3000',
+  exposedUrl: 'https://localhost:3000',
   rpName: 'My App',
   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() {
 async function bootstrap() {
   const certsDir = join(__dirname, '..', 'certs');
   const certsDir = join(__dirname, '..', 'certs');
   const httpsOptions = {
   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);
   // const app = await NestFactory.create<NestExpressApplication>(AppModule);