文章目录
- 基础知识
- OpenSSL
- OpenSSL常用命令
- SSL证书与DDoS攻击
- SSL证书常见办法机构
- armbian安装OpenSSL
- OpenSSL下载和安装
- 生成私钥和证书
- 生成私钥和证书提示信息的解释
- challenge password
- 可能遇到的错误
- 安装完成后的思考
- 完整的操作演示
基础知识
OpenSSL
- OpenSSL是一个开源的密码学工具包,提供了一组用于开发安全通信的库和工具。它支持多种密码算法、数字证书和协议,并提供了许多功能,如加密、解密、签名、验证、生成证书和密钥等。
OpenSSL常用命令
- 生成私钥和自签名证书:
- 生成一个2048位的RSA私钥文件 private.key和一个自签名的证书文件 certificate.crt,有效期为365天。
- 私钥文件用于加密和解密数据,证书文件包含了公钥和相关的证书信息。
openssl req -newkey rsa:2048 -nodes -keyout private.key -x509 -days 365 -out certificate.crt
- 参数的详细解释:
req
: 表示使用 OpenSSL 的证书请求工具。-newkey rsa:2048
: 创建一个新的 RSA 密钥对,其中 RSA 算法使用 2048 位密钥长度。-nodes
: 不加密生成的私钥文件,这样在使用私钥时将不需要输入密码。-keyout private.key
: 将生成的私钥保存到 private.key 文件中。-x509
: 创建一个自签名的 X.509 证书。-days 365
: 设置证书的有效期为 365 天。-out certificate.crt
: 将生成的证书保存到 certificate.crt 文件中。
- 生成证书签名请求(CSR):
- 生成一个2048位的RSA私钥和一个证书签名请求。
openssl req -new -newkey rsa:2048 -nodes -keyout private.key -out csr.csr
-
参数的详细解释:
req
: 表示使用 OpenSSL 的证书请求工具。-new
: 创建一个新的证书请求。-newkey rsa:2048
: 创建一个新的 RSA 密钥对,其中 RSA 算法使用 2048 位密钥长度。-nodes
: 不加密生成的私钥文件,这样在使用私钥时将不需要输入密码。-keyout private.key
: 将生成的私钥保存到 private.key 文件中。-out csr.csr
: 将生成的证书请求保存到 csr.csr 文件中。
-
执行完这段代码后,将生成一个私钥文件 private.key 和一个证书签名请求文件 csr.csr。
-
私钥文件用于加密和解密数据,证书签名请求文件包含了要申请证书的相关信息,例如域名、组织等。你可以将这个证书签名请求文件提交给证书颁发机构(CA)以获取一个有效的证书。
- 查看证书的详细信息:
- 显示证书的详细信息,包括颁发机构、有效期、公钥等。
openssl x509 -in certificate.crt -text -noout
- 查看私钥的详细信息:
- 显示私钥的详细信息,包括算法、长度等。
openssl rsa -in private.key -text -noout
- 加密和解密文件:
- 将使用AES-256-CBC算法对文件进行加密和解密。
openssl enc -aes-256-cbc -salt -in plaintext.txt -out encrypted.txt
openssl enc -d -aes-256-cbc -in encrypted.txt -out decrypted.txt
- 使用
openssl help
命令可以获取更多信息和帮助。
SSL证书与DDoS攻击
- SSL证书本身不能直接防止DDoS攻击。SSL证书是用于加密传输数据并确保通信的安全,但它并不能保护服务器免受高强度的DDoS攻击。
然而,SSL证书提供了一些额外的安全性,使得它们可以在某些情况下帮助防御DDoS攻击。例如,一些DDoS攻击是基于HTTP请求进行的,而SSL证书可以使HTTP请求变得更复杂和更难以模拟,从而减少了攻击的成功率。此外,SSL证书可能使攻击者更难以确定服务器的真实IP地址,因此他们可能需要更多的时间和资源才能发起有效的攻击。
但要避免遭受DDoS攻击,必须采取其他防御措施,例如使用DDoS保护服务、在服务器上实施正确的配置和更新等。
SSL证书常见办法机构
- SSL证书的颁发机构是由一些权威的第三方机构(如Symantec、Comodo、GlobalSign等)颁发的。
- 这些机构负责验证网站的身份和真实性,并将SSL证书颁发给合格的网站。用户连接到这些网站时,可以通过SSL证书验证网站的身份和保护连接的安全性。
- 颁发机构都提供不同类型的 SSL 证书,可以根据个人或企业需要来选择适合的证书。使用 SSL 证书可以确保网站安全性和信任度,是保护网站和用户隐私的重要措施。
armbian安装OpenSSL
OpenSSL下载和安装
-
打开终端,以root用户身份登录或使用sudo权限。
-
更新软件包列表
apt update
-
安装OpenSSL工具
apt install openssl
-
验证OpenSSL是否成功安装
- 成功安装,将显示OpenSSL的版本信息。
openssl version
生成私钥和证书
- 生成私钥和证书签名请求(CSR)文件
- 使用以下命令生成私钥文件:
openssl genrsa -out private.key 2048
- 使用以下命令生成CSR文件:
openssl req -new -key private.key -out csr.csr
- 注意:在生成CSR文件时,需要提供一些信息,如国家、省份、城市、组织名称、通用名称(域名)等。
生成私钥和证书提示信息的解释
challenge password
Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []:
- 这是一个可选的额外属性,用于增加证书的安全性。
- "challenge password"是一个密码,用于保护私钥和证书签名请求。当使用该证书时,可能需要输入这个密码来解锁私钥。
- 如果不想设置"challenge password",可以直接按下回车键跳过该步骤。这样,私钥将不会被密码保护。
- 如果想设置"challenge password",请输入一个安全的密码并按下回车键。请确保记住这个密码,因为在使用证书时需要输入它。
-
提交CSR文件到证书颁发机构(CA)进行签名。也可以选择自签名证书,也可以选择购买商业证书。
-
如果选择了自签名证书,可以使用以下命令生成自签名证书:
#生成一个有效期为365天的自签名证书(未指定存储路径的命令) # 没有指定具体的路径,那么它们将被存储在当前工作目录下 openssl x509 -req -days 365 -in csr.csr -signkey private.key -out certificate.crt
#生成的私钥文件和证书文件将会被保存在你指定的路径中 openssl x509 -req -days 365 -in /path/to/csr.csr -signkey /path/to/private.key -out /path/to/certificate.crt
- 参数的详细解释:
req
: 表示使用 OpenSSL 的证书请求工具。-newkey rsa:2048
: 创建一个新的 RSA 密钥对,其中 RSA 算法使用 2048 位密钥长度。-nodes
: 不加密生成的私钥文件,这样在使用私钥时将不需要输入密码。-keyout private.key
: 将生成的私钥保存到 private.key 文件中。-x509
: 创建一个自签名的 X.509 证书。-days 365
: 设置证书的有效期为 365 天。-out certificate.crt
: 将生成的证书保存到 certificate.crt 文件中。
- 操作成功的提示信息
root@armbian:~# openssl x509 -req -days 365 -in csr.csr -signkey private.key -out certificate.crt Signature ok subject=C = ZN, ST = HeNan, L = KF, O = yang, OU = yuanyou, CN = yue, emailAddress = xxx@qq.com Getting Private key
- “Signature ok” 的消息表示证书签名成功。
- 证书的主题信息,如国家(C)、省/州(ST)、城市(L)、组织(O)、组织单位(OU)、通用名称(CN)和电子邮件地址等也会显示出来。
-
查看私钥文件和证书文件的存放位置
- 默认的存储位置:在当前工作目录下,即执行命令时所在的目录
-
在1Panel面板中,找到相关的SSL证书配置选项。一般在面板设置->安全->https中,导入私钥文件和证书文件,保存配置。
- 注意将两个文件的内容全部复制到相应的文本框中
-
重新启动1Panel面板服务,使配置生效。
- 记得,使用
https://xxx.xxx.xxx.xxx:/端口/安全入口
访问1panel
- 记得,使用
可能遇到的错误
-
服务内部错误:
tls: failed to find any PEM data in certificate input
-
OpenSSL无法在输入的证书文件中找到有效的PEM数据。可能的原因:
-
证书文件路径错误:请确保你提供的证书文件路径是正确的,并且文件存在。
-
证书文件格式错误:证书文件必须采用PEM格式进行编码。
- 使用文本编辑器打开证书文件,确认它以
-----BEGIN CERTIFICATE-----
开头,以-----END CERTIFICATE-----
结尾,并且没有额外的空格或换行符。
- 使用文本编辑器打开证书文件,确认它以
-
证书文件内容错误:如果证书文件已被篡改或损坏,OpenSSL可能无法正确解析它。
安装完成后的思考
- 为什么1panel配置了openSSl证书,结果还是浏览器还是显示不安全
- 原因:
- 浏览器显示证书无效的警告通常是因为使用了自签名证书。自签名证书是由自己或自己的组织颁发的,而不是由公共的证书颁发机构(CA)颁发的。
- 浏览器默认信任公共的证书颁发机构颁发的证书,因此当你使用自签名证书时,浏览器会认为该证书不受信任,从而显示证书无效的警告。
- 建议:自签名证书在个人或内部使用的情况下是可以接受的,但在公共网站或需要与用户共享敏感信息的场景下,建议使用由公共的证书颁发机构颁发的有效证书。
完整的操作演示
Last login: Tue Jul 11 09:55:58 2023 from localhost
root@armbian:~# apt update
root@armbian:~# apt upgrade
root@armbian:~# apt install openssl
root@armbian:~# openssl version
OpenSSL 1.1.1n 15 Mar 2022
root@armbian:~# openssl genrsa -out private.key 2048
Generating RSA private key, 2048 bit long modulus (2 primes)
............+++++
............................+++++
e is 65537 (0x010001)
root@armbian:~# openssl req -new -key private.key -out csr.csr
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]:ZN
State or Province Name (full name) [Some-State]:HeNan
Locality Name (eg, city) []:KF
Organization Name (eg, company) [Internet Widgits Pty Ltd]:yang
Organizational Unit Name (eg, section) []:yuanyou
Common Name (e.g. server FQDN or YOUR name) []:yue
Email Address []:xxx@qq.com
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:xxxx
An optional company name []:yang
root@armbian:~# openssl x509 -req -days 365 -in csr.csr -signkey private.key -out certificate.crt
Signature ok
subject=C = KF, ST = HeNan, L = KF, O = yang, OU = yuanyou, CN = yue, emailAddress = 2330648064@qq.com
Getting Private key
root@armbian:~#