ssl免费证书和付费证书有什么区别?使用上面有没有什么不一样的地方?
既然有免费证书为什么还要弄付费证书呢?不知道什么原因?
免费的没有付费稳定,但是对于一般企业免费的够用了
但是免费的只能配置一个域名,付费可以配置通用域名
例如免费只能使用 https://www.xxx.com/
付费 :https://*.xxx.com 通配符
免费SSL证书和付费SSL证书的主要区别在于其认证机构和所提供的保护程度。付费证书由受信任的第三方认证机构(CA)颁发,而免费证书通常由像Let's Encrypt这样的组织提供。付费证书提供更高级别的身份验证和保护,因此通常被用于商业网站和电子商务平台。
使用上,免费证书和付费证书的配置和安装过程类似。但是在某些情况下,付费证书可能需要更多的配置和技术知识。
为什么有时候需要付费证书?付费证书提供更高级别的身份验证和保护,更适合商业网站和电子商务平台。此外,一些浏览器和操作系统可能不信任免费证书,这可能会导致安全警告或错误。
以下是使用Let's Encrypt免费证书的示例代码:
# 安装certbot
sudo apt-get update
sudo apt-get install certbot
# 生成证书
sudo certbot certonly --standalone -d example.com -d www.example.com
# 配置Nginx
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
# 其他Nginx配置
}
# 自动更新证书
sudo certbot renew --dry-run
通过以上代码,您可以使用Let's Encrypt免费证书来保护您的网站,并自动更新证书。但是,请注意,您需要在使用免费证书之前了解证书的局限性和安全性。
server {
listen 443 ssl;
server_name xxxx; # localhost修改为您证书绑定的域名。
ssl on; #设置为on启用SSL功能。
root /usr/local/Web/src/;
index index.html index.htm;
ssl_certificate cert/xxxxxx.pem; #将domain name.pem替换成您证书的文件名。
ssl_certificate_key cert/xxxxx.key; #将domain name.key替换成您证书的密钥文件名。
ssl_session_timeout 5m;
ssl_ciphers xxxxxx; #使用此加密套件。
ssl_protocols TLSv1; #使用该协议进行配置。
ssl_prefer_server_ciphers on;
location ~* .(html|js|css)$ {
root /usr/local/Web/src/; #站点目录。
index index.html index.htm;
}
}
上面配置的含义是访问https的时候nginx根据location的正则表达式匹配跳转到对应的页面,这里开启了443端口的监听,因为https协议默认的端口号为443,http协议默认为80
重点来了
如果我们有其它非https的接口工程如何通过nginx来实现不在项目中配置https相关的认证代码,从而实现http协议升级https ,让前端调接口的时候不会报跨域异常
有两种方式,一种是另开一个端口比如我原端口是5280通过nginx另开一个5281端口监听,访问5281的时候转发到5280再加上一些ssl认证信息就能够直接完成升级.一种则直接再443端口中多加几个location的正则匹配
配置如下:
server {
listen 5281 ssl;
server_name www.baidu.com;
ssl_certificate cert/xxxxx.pem; #将domain name.pem替换成您证书的文件名。
ssl_certificate_key cert/xxxxx.key; #将domain name.key替换成您证书的密钥文件名。
ssl_session_timeout 5m;
ssl_ciphers xxxxx #使用此加密套件。
ssl_protocols TLSv1; #使用该协议进行配置。
ssl_prefer_server_ciphers on;
location /{
proxy_pass http://xxx.xxx.xx.xx:5280;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_set_header Connection "";
proxy_http_version 1.1;
proxy_connect_timeout 1;
proxy_send_timeout 30;
proxy_read_timeout 60;
}
}