在Ubuntu的apache中创建本地域名,并使用自签名证书实现HTTPS
想象中的读者
・有过使用 apt 和 vim 经验的人。
・想要在开发环境中进行 HTTPS 通信的人。
・即使方法有些强制,只要能暂时实现 HTTPS 就好的人。
我运行的环境
ホストOS windows10仮想環境を作るソフト wsl2仮想OS Ubuntu 22.04.2 LTSapacheApache/2.4.52 (Ubuntu)
安装apache2
首先启动Ubuntu并执行以下操作。
# apacheインストール
sudo apt install apache2
# 動作確認
curl localhost
在安装apache2时,localhost已经可以连接了。真是太棒了。

如果没有修改过主机文件的初始设定,则localhost是一个常用的指代自己个人电脑的名称。
创建本地域名 (Cjù dì
首先需要查找分配给wsl的IP地址。
hostname -I
# 筆者の場合、172.29.185.9 が返ってくる
请在下面的文件中写入您想与此IP地址关联的域名。
以”管理员权限”打开Windows PowerShell。

notepad C:\Windows\System32\drivers\etc\hosts
# 書くこと-------------------
# ↓すでに書いてある
127.0.0.1 localhost
# ↓新たに追記する
172.29.185.9 akimaki.local
# -------------------
假设按照这样的写法,在浏览器的URL栏中输入自制的域名“akimaki.local”,它将自动连接到172.29.185.9。
请注意,如果你没有管理员权限,就无法编辑hosts文件。而且像sudo命令那样从powershell提升为管理员身份稍微有些麻烦,所以最好一开始就使用管理员身份启动。
3. 确定动作

我自己制作证书
1. 创建SSL证书 SSL
在我的环境中,已经安装了openssl。如果没有的话,似乎可以通过apt命令进行安装。
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/apache-selfsigned.key -out /etc/ssl/certs/apache-selfsigned.crt
# ----実行するとこんなものが出る----------
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
接下来会依次出现以下提示,您需要逐个输入。对于国家名称、组织名称或正式证书,我们会严格书写以证明其真实性。但自签名证书则可以随意填写(应该可以的)。
Country Name (2 letter code) [AU]:JP
State or Province Name (full name) [Some-State]:hatenaCity
Locality Name (eg, city) []:hatena
Organization Name (eg, company) [Internet Widgits Pty Ltd]:hatena
Organizational Unit Name (eg, section) []:hatena
Common Name (e.g. server FQDN or YOUR name) []:ha
Email Address []:
# -----------
将制作的证书添加到Apache的配置中。
sudo vim /etc/apache2/sites-available/default-ssl.conf
# ----記述内容------------
# ↓33行目付近? すでにある設定をコメントアウトする
#SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
#SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
# ↓追加する行
SSLCertificateFile /etc/ssl/certs/apache-selfsigned.crt
SSLCertificateKeyFile /etc/ssl/private/apache-selfsigned.key
# -----------------
# SSLの有効化
sudo a2enmod ssl
sudo a2ensite default-ssl.conf
# 設定情報を読み込んでもらう
sudo systemctl reload apache2

使用Chrome浏览器会出现这样的情况,但其他浏览器也应该会显示一些警告。总之,如果能够到达这一步,您可以通过屏幕上的详细设置按钮来强制访问该网站。

转而说
总结起来并没有做什么了不起的事情,但在试错的过程中,我花了好几天的时间努力,所以留作备忘录。
另外在域名中加上“.local”只是为了看起来更像样,没有特别的意义。