diff --git a/.rr.yaml b/.rr.yaml index 363e5b7..8c59f35 100644 --- a/.rr.yaml +++ b/.rr.yaml @@ -11,6 +11,12 @@ server: http: address: :8080 + ssl: + address: :8443 + cert: 'web/ssl/localhost.pem' + key: 'web/ssl/localhost-key.pem' + redirect: true + headers: response: "Cache-Control": "no-cache" diff --git a/CHANGELOG.md b/CHANGELOG.md index 295d5ce..81110c1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ - Bug #140: Move badges for latest stable version and total downloads in `README.md` to `Installation` section (@terabytesoftw) - Bug #142: Update installation instructions to use `dev-road-runner` in docs, remove `extra.branch-alias` from `composer.json` (@terabytesoftw) - Bug #143: Remove outdated `RoadRunner` badge from `README.md` (@terabytesoftw) +- Enh #145: Add HTTPS/TLS support with certificate and key for secure connections (@terabytesoftw) ## 0.1.0 August 31, 2025 diff --git a/README.md b/README.md index f4ec38f..93afb4e 100644 --- a/README.md +++ b/README.md @@ -37,6 +37,7 @@ A modern, Bootstrap 5-powered Yii2 application template designed for rapid web-a - ✅ **Clean Architecture** - Well-organized directory structure following Yii2 best practices. - ✅ **Console Commands** - Example console commands for background tasks and maintenance. - ✅ **Developer Tools** - Debugging tools, logging, and development-friendly configurations. +- ✅ **HTTPS/TLS Support** - Local HTTPS via TLS using mkcert-generated certificates. - ✅ **Modern Bootstrap 5 UI** - Responsive, mobile-first design with latest Bootstrap components. - ✅ **Testing Ready** - Codeception test suite with examples for functional and unit testing. diff --git a/composer.lock b/composer.lock index 761f122..eb45351 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "4358e8618ef44797732fd78d261a0e56", + "content-hash": "0996a11f110d6276cc71a81ee2b1111b", "packages": [ { "name": "cebe/markdown", @@ -2482,12 +2482,12 @@ "source": { "type": "git", "url": "https://github.com/roadrunner-php/http.git", - "reference": "c00ab7afd289df7a6b49f9ef07ce57dcb8020df1" + "reference": "a44a5f7d54d4ee8a14fe99cd22dcd128db270c88" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/roadrunner-php/http/zipball/c00ab7afd289df7a6b49f9ef07ce57dcb8020df1", - "reference": "c00ab7afd289df7a6b49f9ef07ce57dcb8020df1", + "url": "https://api.github.com/repos/roadrunner-php/http/zipball/a44a5f7d54d4ee8a14fe99cd22dcd128db270c88", + "reference": "a44a5f7d54d4ee8a14fe99cd22dcd128db270c88", "shasum": "" }, "require": { @@ -2503,9 +2503,11 @@ "require-dev": { "jetbrains/phpstorm-attributes": "^1.0", "nyholm/psr7": "^1.3", - "phpunit/phpunit": "^10.0", + "phpunit/phpunit": "^10.5", + "spiral/code-style": "^2.3", + "spiral/dumper": "^3.3", "symfony/process": "^6.2 || ^7.0", - "vimeo/psalm": "^5.9" + "vimeo/psalm": "^6.13" }, "suggest": { "ext-protobuf": "Provides Protocol Buffers support. Without it, performance will be lower.", @@ -2555,7 +2557,7 @@ "docs": "https://docs.roadrunner.dev", "forum": "https://forum.roadrunner.dev/", "issues": "https://github.com/roadrunner-server/roadrunner/issues", - "source": "https://github.com/roadrunner-php/http/tree/v3.5.2" + "source": "https://github.com/roadrunner-php/http/tree/v3.6.0" }, "funding": [ { @@ -2563,7 +2565,7 @@ "type": "github" } ], - "time": "2025-05-13T09:40:10+00:00" + "time": "2025-08-31T12:42:23+00:00" }, { "name": "spiral/roadrunner-worker", @@ -7473,12 +7475,12 @@ "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "5a39902d7871018ebf1b4a47284a984e2d39c012" + "reference": "b3ae3d27beb3625f29c7a01799d3f45506c53745" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/5a39902d7871018ebf1b4a47284a984e2d39c012", - "reference": "5a39902d7871018ebf1b4a47284a984e2d39c012", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/b3ae3d27beb3625f29c7a01799d3f45506c53745", + "reference": "b3ae3d27beb3625f29c7a01799d3f45506c53745", "shasum": "" }, "require": { @@ -7524,7 +7526,7 @@ "type": "github" } ], - "time": "2025-08-30T16:32:16+00:00" + "time": "2025-08-31T15:28:24+00:00" }, { "name": "phpstan/phpstan-strict-rules", diff --git a/web/ssl/localhost-key.pem b/web/ssl/localhost-key.pem new file mode 100644 index 0000000..4677e62 --- /dev/null +++ b/web/ssl/localhost-key.pem @@ -0,0 +1,28 @@ +-----BEGIN PRIVATE KEY----- +MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDJXRl0fj4a5Myo +WpAN8jevuPIlvS19Yk2243GIXf9rNt7/th4ujMYa7DyGmFE4UiXz/gj5y9vq6/3d +JNrVPqfcBHKgDdGt4V+c6bauzxhs+QilYzft/9/y/Mglt6Z9ibsvIGnRn6R8gc6W +dV2KPRUNDTdb83R0Y7CFRydTkTEYl1/mldAz5MNrlIYrr55PbQTG2fZlMXcfmJOh +TzGvux3skPRD4igTV8rxd0x5RDvcVdSCOx3vpI2ZJ3Vh28Bp934mTNo4Ihsmkn4A +nzUJsyRNAcXp//8xz9upvmy4FfqXhhR5/oOit4INMjFxkEA2CrX7CYz/EiRhyxWt +jGmxKXSVAgMBAAECggEARIxC7BtFvRYCbZVW0MiSGGnXVO2PnM1oM0g+D/QfzTnC +tD4lDCe0ENo2yIL1szyT2vmxyIeTd+eaZjvzmwBXWFjTRJUvuges6tfM7rllUUN9 +o/+gvI6MiEVxRRW9waKvbB2WqFu2PQRbdXDCxRqCHg1PuSepjy2Ym+ZbBuG4Wuwh +q9vbbqe0isp0YZr8oCeNTbR2Mi2q2DPUTP+WdA0TXulx+IwlIlYnIk0a2IGcdGpX +io9Mt3/aspZhx7uQf3yBoVMiOWRx/04t4Yc0oxuwLP4atGd7jhKZ2dfgCo6jPPet +ojIpJgN7vW3o4xRnrv0UuTq9vm2W0ZtV5Zfx4sp/gQKBgQDMBGV5s5itMXSdqoXg +4xtELye0oMYEd1ih8+ql+VP08nUeflV7vD6+Ci8/x++Azqpr9SU1KBG/9Cj2jK8k +uLdeKcEuac8DjU1eELGmDnIk4m0supEP3JyrTQCVQYw9Pwvv+jGNz2zi0xppIzoP +eObU/ftoV3Ue32c9tjMMvzlpBQKBgQD8q57knuAqTVJiIqo1LsRj+j5XQ3IpCYY7 +bVHHi607JywBE8JyerkycYCs6BU4AyZNe8Wp6YJM6qINHgvD13j7CjzSg/YEQVla +O196Ka08Latvu6D3BqR9oKy+5vto/QNxD0hGToWySZCVjbsc5QRxCbq77GZ05EpI +owj0Wz9yUQKBgEpFJ3Pgj6otINjs5QPzaU+vIvM8vBmQIPIES93UIF5BjaVmNFRx +OR4RsxWzAVuQ4LWgbsUlKyEID4mBuZjSrd5XsP3mgvg2Dn458ZIUHDWVQE1SNdDi +bR5nT9kGHbmGJCBeon+PjYIde7XenxpW1yGevFFF1VtB1OHAXGE9k/bJAoGBAJDa +wylGfDVERurD/NioiybWHE9i91vXfgEr1yqTRSkYd/3WGjAPc4Ub1S1LkH6gL6FU +SCn1GSKHkYf7pbsNGOqzH9OAm9YssNEuILqkkhBiDlrsMofsYvky2FZJjfDOvN5g +aIsGEVf5HM7ghlk2Yql7bna2PLbe+kdSUJvmhCVBAoGBAMY9+yNm9zpHYDLfgmeG +mUjUrw73G7j+ucRQI6/owgaqJWKlfULG2CQ18XhcpjJcI7R1gADwNwlJN7AjGDtg +gskDn8yoAGBvaBgkkkv3Z8rKTCGR8mh4bY6G89agY9NphigsaUJrn+4iX59K2/eK +DNFgybL+X7Mh7P8tmBt1Adua +-----END PRIVATE KEY----- diff --git a/web/ssl/localhost.pem b/web/ssl/localhost.pem new file mode 100644 index 0000000..7338a1f --- /dev/null +++ b/web/ssl/localhost.pem @@ -0,0 +1,26 @@ +-----BEGIN CERTIFICATE----- +MIIEYjCCAsqgAwIBAgIRAMJ3dsZ62GwPUcMuKwB/pBQwDQYJKoZIhvcNAQELBQAw +gYcxHjAcBgNVBAoTFW1rY2VydCBkZXZlbG9wbWVudCBDQTEuMCwGA1UECwwlVGVy +YWJ5dGVzb2Z0d1xkZXZlbG9wZXJAVGVyYWJ5dGVzb2Z0dzE1MDMGA1UEAwwsbWtj +ZXJ0IFRlcmFieXRlc29mdHdcZGV2ZWxvcGVyQFRlcmFieXRlc29mdHcwHhcNMjUw +NzEwMjIxNjI2WhcNMjcxMDEwMjExNjI2WjBZMScwJQYDVQQKEx5ta2NlcnQgZGV2 +ZWxvcG1lbnQgY2VydGlmaWNhdGUxLjAsBgNVBAsMJVRlcmFieXRlc29mdHdcZGV2 +ZWxvcGVyQFRlcmFieXRlc29mdHcwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK +AoIBAQDJXRl0fj4a5MyoWpAN8jevuPIlvS19Yk2243GIXf9rNt7/th4ujMYa7DyG +mFE4UiXz/gj5y9vq6/3dJNrVPqfcBHKgDdGt4V+c6bauzxhs+QilYzft/9/y/Mgl +t6Z9ibsvIGnRn6R8gc6WdV2KPRUNDTdb83R0Y7CFRydTkTEYl1/mldAz5MNrlIYr +r55PbQTG2fZlMXcfmJOhTzGvux3skPRD4igTV8rxd0x5RDvcVdSCOx3vpI2ZJ3Vh +28Bp934mTNo4Ihsmkn4AnzUJsyRNAcXp//8xz9upvmy4FfqXhhR5/oOit4INMjFx +kEA2CrX7CYz/EiRhyxWtjGmxKXSVAgMBAAGjdjB0MA4GA1UdDwEB/wQEAwIFoDAT +BgNVHSUEDDAKBggrBgEFBQcDATAfBgNVHSMEGDAWgBRlhRQpnl7nIy6O/r3UOcaY +LgXBSzAsBgNVHREEJTAjgglsb2NhbGhvc3SHBH8AAAGHEAAAAAAAAAAAAAAAAAAA +AAEwDQYJKoZIhvcNAQELBQADggGBAIR0dkwyUST+W8TATCZbYThwiYuTSLYyQvyX +7ieIYWW31nAfcL/WvMt5d80p67mLPvGoGLZSayId7uf6j0LVY2Y94G1z7HOdRd7s +D7InIrLI0G7pKSXI8mSCczgpx2FD2yIkHaDCdZIYXpkkAhJ6I4hghSG2KZoJ0vhA +JPTd9VW8ydYykfE619wjZ68RUlve4wtNkmQCrJAWOZMWCNl8O/iz5cWafTr0p4kD +6qdE/gKvfyWQdc1XgPpZJkpYNw+CGVcpfE7i/++FfspTTY+XyYZClbQjMD1hNGq/ +ATsl8DR4xH5ztUaAkLBRDXpXGal7VyNoBpBot9scDR71YMsTTKf/1NdIt8gPLF4P +ULwW7UvaHQAj3klPcanEaTv/bgQxor6b8tSwMLqHcU+SdQBjYnWLuAzKTCvL9m73 +MQRRt/N+Z9McSApps0F82eSR3a1HaU5lyH6Es6dLkVnY/ksmzqwi5FADsORSH95M +GvP9WbrnCQvIW/n3T3pvmuV/BeRkVg== +-----END CERTIFICATE-----