wp-env https support 8211
What?
Provides HTTPS support for wp-env by allows to define the ports used for HTTPS, path of the certificate files, and even creates certificate files if none are specified.
Why?
Addresses #8211 Old PR #53959
For another use case, I'm currently developing a plugin for CSP management, and Chromium browsers require HTTPS for the
report-todirective.
I'm sure there are other scenarios that require the use of HTTPS. This allows inexperienced users to easily enable HTTPS if necessary.
How?
If https is enabled in the .wp-env.json config, it uses the default or user defined ports and certificate keypair to enable. You can define a certificate keypair to be used or let devcert create certificates if none are defined. A new apache config is created and enabled using this cert. The the WP_HOME and WP_SITEURL constants are updated as well.
Testing Instructions
- Add
"https": trueto.wp-env.jsonor.wp-env.override.json - Run
wp-env start
To define ports:
Add "httpsPort": 1234 and/or "testsHttpsPort": 5678 to the config root.
To define certificate files:
Add "sslCertPath": "/path/to/file.crt" and "sslKeyPath": "/path/to/file.key" to the config root. Both must be defined.
Note that because of my limited experience, I have not tested with xdebug and the like. However, both the development and tests instances uses the certificate as expected.
Warning: Type of PR label mismatch
To merge this PR, it requires exactly 1 label indicating the type of PR. Other labels are optional and not being checked here.
- Type-related labels to choose from: [Type] Automated Testing, [Type] Breaking Change, [Type] Bug, [Type] Build Tooling, [Type] Code Quality, [Type] Copy, [Type] Developer Documentation, [Type] Enhancement, [Type] Experimental, [Type] Feature, [Type] New API, [Type] Task, [Type] Technical Prototype, [Type] Performance, [Type] Project Management, [Type] Regression, [Type] Security, [Type] WP Core Ticket, Backport from WordPress Core, Gutenberg Plugin.
- Labels found: First-time Contributor, [Tool] Env.
Read more about Type labels in Gutenberg. Don't worry if you don't have the required permissions to add labels; the PR reviewer should be able to help with the task.
The following accounts have interacted with this PR and/or linked issues. I will continue to update these lists as activity occurs. You can also manually ask me to refresh this list by adding the props-bot label.
Unlinked Accounts
The following contributors have not linked their GitHub and WordPress.org accounts: @[email protected], @nashvilleccr.
Contributors, please read how to link your accounts to ensure your work is properly credited in WordPress releases.
If you're merging code through a pull request on GitHub, copy and paste the following into the bottom of the merge commit message.
Unlinked contributors: [email protected], nashvilleccr.
Co-authored-by: bgoewert <[email protected]>
To understand the WordPress project's expectations around crediting contributors, please review the Contributor Attribution page in the Core Handbook.
:wave: Thanks for your first Pull Request and for helping build the future of Gutenberg and WordPress, @bgoewert! In case you missed it, we'd love to have you join us in our Slack community.
If you want to learn more about WordPress development in general, check out the Core Handbook full of helpful information.
The following contributors have not linked their GitHub and WordPress.org accounts: @[email protected].
Unsure what I did wrong. My WP account has been connected for some time. https://profiles.wordpress.org/bgoewert/
This will conflict with #65944. If that PR is merged first I can edit this PR to accommodate.
I also realized that I did not update the readme or changelog, which I am working on now.
@ObliviousHarmony Can you review when you have time? I believe this is ready. Testing with WSL does not copy CA to trusted store. Will test that on Windows and Linux later (but should be okay).
@ObliviousHarmony or @t-hamano, can someone review when you have time?
I was using this in my own projects and ran into an issue. I've just committed a fix for that as well as update the wp-env.json schema with the new properties. Also merged trunk so it should be up to date.