乌班图配置 https ssl证书

2. 配置证书

在这里,我假设你已经会配置基本的/etc/apache2/sites-available/000-default.conf这个文件来达到已经可以通过 http 的方式来访问你的站点。

在/etc/apache2这个目录下,有两个有关的目录sites-available和sites-enabled,我们进入sites-enabled目录下可以发现,里面有一个文件000-default.conf

$ ll 
lrwxrwxrwx 1 root root 35 Dec 28 15:24 000-default.conf -> ../sites-available/000-default.conf

实质上这个文件是/etc/apache2/sites-available/000-default.conf这个文件的软链接。

我们要配置另 ssl 证书,要依靠另一个文件,也就是default-ssl.conf,首先我们需要设置一个软链接,把这个文件链接到sites-enabled这个文件夹中:

ln -s /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-enabled/000-default-ssl.conf

然后去修改这个文件000-default-ssl.conf,因为已经做了软链接,其实这时候修改000-default-ssl.conf或default-ssl.conf都一样。

这个文件没有做任何修改前长这样子(去除自带的注释之后):

<IfModule mod_ssl.c>
    <VirtualHost _default_:443>
        ServerAdmin webmaster@localhost

        DocumentRoot /var/www/html

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

        SSLEngine on

        SSLCertificateFile  /etc/ssl/certs/ssl-cert-snakeoil.pem
        SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
    
        <FilesMatch "\.(cgi|shtml|phtml|php)$">
                SSLOptions +StdEnvVars
        </FilesMatch>
        <Directory /usr/lib/cgi-bin>
                SSLOptions +StdEnvVars
        </Directory>

    </VirtualHost>
</IfModule>

然后把从阿里云上面下载好的证书(3个文件)传到你自定义的目录中

然后我们需要修改一下,修改成这样:

<IfModule mod_ssl.c>
    <VirtualHost _default_:443>
        ServerAdmin 你的邮箱
        
        DocumentRoot /var/www/你的目录
        ServerName 你的域名

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

        SSLEngine on
        # 注意,需要添加这三行
        SSLCertificateFile 你自定义的路径/2_xxx.xxx.xxx.crt
        SSLCertificateKeyFile 你自定义的路径/3_xxx.xxx.xxx.key
        SSLCertificateChainFile 你自定义的路径/1_root_bundle.crt
    
        <FilesMatch "\.(cgi|shtml|phtml|php)$">
                SSLOptions +StdEnvVars
        </FilesMatch>
        <Directory /usr/lib/cgi-bin>
                SSLOptions +StdEnvVars
        </Directory>
    </VirtualHost>
</IfModule>

重要的三个参数的作用如下表:

配置文件参数说明
SSLEngine on启用 SSL 功能
SSLCertificateFile证书文件
SSLCertificateKeyFile私钥文件
SSLCertificateChainFile证书链文件

改好之后保存。

然后这时,我们加载一下 Apache2 的 SSL 模块:

sudo a2enmod ssl   #加载模块
sudo service apache2 restart # 重启服务

这时,在浏览器输入https://你的域名应该已经可以通过 https 的方式来访问网站了,这时浏览器那里应该也已经有了一个绿色的小锁。

但是,但是…这还不够,因为我们如果不主动输入https://的话,直接输入域名,还是会直接跳转到 80 端口的普通的 http 方式访问,所以我们需要强制使用 https 来访问

强制使用https

我们只需要打开/etc/apache2/sites-available/000-default.conf这个文件,在你的<VirtualHost*:80></VirtualHost>这个标签内随便一个地方加上三行:

RewriteEngine on
RewriteCond   %{HTTPS} !=on
RewriteRule   ^(.*)  https://%{SERVER_NAME}$1 [L,R]

然后保存,然后启动 Apache2 的重定向:

 sudo a2enmod rewrite

然后再重启 Apache2,至此大功告成:

sudo service apache2 restart



作者:hiekay
链接:https://www.jianshu.com/p/8df8e92ace30
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

### Ubuntu 下 Nginx 配置文件修改教程 #### 安装 Nginx 在 Ubuntu 系统中,可以通过以下命令安装 Nginx: ```bash sudo apt-get update sudo apt-get install nginx ``` 完成安装后,可以使用以下命令启动 Nginx 服务[^1]。 #### 查找配置文件的位置 Nginx 的主要配置文件通常位于 `/etc/nginx/nginx.conf`。除此之外,虚拟主机的配置文件一般存储在两个目录中: - 虚拟主机配置文件模板路径:`/etc/nginx/sites-available/` - 启用中的虚拟主机配置链接路径:`/etc/nginx/sites-enabled/` 默认情况下,默认网站的配置文件会存放在 `/etc/nginx/sites-available/default` 中,并通过符号链接指向到 `sites-enabled/default` 文件夹下[^3]。 #### 编辑配置文件 编辑器可以选择任何你喜欢的工具,比如 nano 或 vim。以下是具体操作方法: 1. **打开默认配置文件** 使用以下命令来编辑默认配置文件: ```bash sudo nano /etc/nginx/sites-available/default ``` 2. **调整服务器根目录设置** 如果需要更改 HTML 文件的路径,在配置文件中找到如下字段并进行修改: ```nginx root /var/www/html; ``` 将其更改为所需的路径,例如 `/home/user/mywebsite`。 3. **保存并退出** 在 nano 编辑器中按 Ctrl+O 保存,Ctrl+X 退出;或者在 Vim 中输入 `:wq!` 来保存并退出。 4. **测试配置文件语法** 修改完成后,运行以下命令验证配置文件是否有错误: ```bash sudo nginx -t ``` 若无误,则显示类似于 “syntax is ok” 和 “test is successful”。 5. **重新加载 Nginx** 测试成功后,执行以下命令使新配置生效: ```bash sudo systemctl reload nginx ``` 或者如果未启用 systemd 可以尝试: ```bash sudo service nginx reload ``` #### SSL 证书转换 (可选) 如果有 HTTPS 需求,可能需要用到 PEM 到 CRT 或 KEY 格式的转换。这可以通过 OpenSSL 工具实现: ```bash openssl x509 -in fullchain.pem -out fullchain.crt openssl rsa -in privkey.pem -out privkey.key ``` 上述命令分别用于将 `.pem` 文件转化为 `.crt` 和 `.key` 格式[^4]。 --- ### 示例代码片段 假设要创建一个新的站点配置文件 `/etc/nginx/conf.d/example.com.conf`,内容如下所示: ```nginx server { listen 80; server_name example.com www.example.com; location / { proxy_pass http://localhost:5000; # 假设应用运行在此端口上 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } ``` 最后记得再次检查语法和重载服务。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值