在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.png

如果没有修改过主机文件的初始设定,则localhost是一个常用的指代自己个人电脑的名称。

创建本地域名 (Cjù dì

首先需要查找分配给wsl的IP地址。

hostname -I
# 筆者の場合、172.29.185.9 が返ってくる

请在下面的文件中写入您想与此IP地址关联的域名。

以”管理员权限”打开Windows PowerShell。

image.png
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. 确定动作

mydomain.png

我自己制作证书

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 

privacyError1.png

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

privacyError2.png

转而说

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

广告
将在 10 秒后关闭
bannerAds