centos7安装根证书 (root certificates)

centos7安装根证书 (root certificates),第1张

1.将证书复制到 /etc/pki/ca-trust/source/anchors/ 文件夹,本文以mitmproxy的https证书为例

2.移动到将此证书软连接至 /etc/ssl/certs/文件夹中

效果如下

3.运行 update-ca-trust,更新系统的证书

此命令一般centos7自带,如果没有则需要安装

yum install ca-certificates

update-ca-trust force-enable

参考链接:

MacOS/Ubuntu/Debian/Centos系统下如何安装根证书

步骤:

假设我们tomcat的路径为/opt/tomcat,在此目录下新建ssl目录用于存放证书:

cd /opt/tomcat/ssl

一、首先,我们需要生成SSL证书,用到keytool工具,关键有三步:

①生成keystone,用以下命令

#keytool -genkey -alias ssologin -keyalg RSA -keypass changeit -storepass changeit -keystore server.keystore -validity 3650

注:changeit是jdk中证书默认的密码

②从keysotre中导出别名为tomcat-cas-server的证书,生成server.crt文件

#keytool -export -trustcacerts -alias ssologin -file server.crt -keystore server.keystore -storepass changeit

③将server.crt导入到jre的可信任证书仓库

#keytool -import -trustcacerts -alias ssologin -file server.crt -keystore "$JAVA_HOME/jre/lib/security/cacerts" -storepass changeit

注意:如果是windows主机,使用%JAVA_HOME%,如果是linux就使用$JAVA_HOME

二、配置好证书之后,我们需要配置tomcat支持SSL

修改conf/server.xml文件,其中SSL部分如下,其它不用动:

<Connector port="443" protocol="HTTP/1.1"

connectionTimeout="5000" URIEncoding="UTF-8"

scheme="https" secure="true" SSLEnabled="true"

clientAuth="false" sslProtocol="TLS"

keystoreFile="/opt/tomcat/ssl/server.keystore"

keystorePass="changeit"/>

修改后之后,重启tomcat即可生效

再正式访问之前,记得把防火墙的443端口打开,centos的iptables配置如下:

#vi /etc/sysconfig/iptables

添加以下配置:

-A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT

配置完之后记得重启iptables:

#service iptables restart

iptables重启之后,你就可以通过浏览器访问了https://your.domain.com

三、tomcat作为SSL的客户端

如果我们的应用作为客户端需要与开启SSL的服务器进行通信,那我们必须将服务器证书安装在jre的可信列表中.

具体步骤是:将上述第一步中的第②小步生成的server.crt分发给需要使用的客户端,然后在客户端用keytool工具导入到jre的可信列表,如下命令:

#keytool -import -trustcacerts -alias ssologin -file server.crt -keystore "%JAVA_HOME%/jre/lib/security/cacerts" -storepass changeit

注意:我这里的机器是windows机器,所以使用%JAVA_HOME%,其实这个导入过程和一.③是一样的

四、其它可能会用到的证书相关命令

①列出系统仓库中存在的证书名称:

#keytool -list -keystore "$JAVA_HOME/jre/lib/security/cacerts" -storepass changeit

如本文中添加的证书,会找到这么一行

ssologin, 2014-9-4, trustedCertEntry,

认证指纹 (MD5): 12:3B:02:6F:78:6E:A6:D3:AB:96:CA:63:7D:7B:55:04

②消除系统中存在的名为ssologin的证书

#keytool -delete -alias ssologin -keystore "$JAVA_HOME/jre/lib/security/cacerts" -storepass changeit

#keytool -delete -alias ssologin -storepass changeit

1. 生成自签名的证书

通常要配置 https 的服务器,都需要一个由正式的 CA 机构认证的 X509 证书。当客户端连接 https 服务器时,会通过 CA 的共钥来检查这个证书的正确性。但要获得 CA 的证书是一件很麻烦的事情,而且还要花费一定的费用。因此通常一些小的机构会是使用自签名的证书。也就是自己做 CA,给自己的服务器证书签名。

这个过程有两个主要的步骤,首先是生成自己的 CA 证书,然后再生成各个服务器的证书并为它们签名。 我是用 OpenSSL 来生成自签名证书的。

第一步是制作 CA 的证书:

openssl genrsa -des3 -out my-ca.key 2048

openssl req -new -x509 -days 3650 -key my-ca.key -out my-ca.crt

这会生成 my-ca.key 和 my-ca.crt 文件,前者存放着使用 my-ca.crt 制作签名时必须的密钥,应当妥善保管。而后者是可以公开的。上面的命令为 my-ca.key 设定的有效期为 10 年。

用命令

openssl x509 -in my-ca.crt -text -noout

可以查看 my-ca.crt 文件的内容。

有了 CA 证书之后,就可以为自己的服务器生成证书了:

openssl genrsa -des3 -out mars-server.key 1024

openssl req -new -key mars-server.key -out mars-server.csr

openssl x509 -req -in mars-server.csr -out mars-server.crt -sha1 -CA my-ca.crt -CAkey my-ca.key -CAcreateserial -days 3650

前两个命令会生成 key、csr 文件,最后一个命令则通过 my-ca.crt 为 mars-server.csr 制作了 x509 的签名证书。

需要注意的是,在执行上述第二个命令时,Common Name 选项应当输入的是服务器的域名,否则在用户通过 https 协议访问时每次都会有额外的提示信息。

用命令

openssl x509 -in mars-server.crt -text -noout

可以查看 mars-server.crt 文件的内容。

2. 配置 Apache 服务器

首先,创建 /etc/apache2/ssl 目录,将刚刚制作的 my-ca.crt、mars-server.key 和 mars-server.crt 文件拷贝到这个目录中。

接着执行命令

a2emod ssl

激活 Apache 的 SSL 模块,然后在 /etc/apache2/sites-enable/ 中添加虚拟主机,这个过程与添加普通的虚拟主机类似,不同点在于该主机的端口应为 443。配置如下:

NameVirtualHost *:443

<VirtualHost *:443>

ServerName localhost

DocumentRoot /var/www

SSLEngine On

SSLCipherSuite HIGH:MEDIUM

SSLProtocol all -SSLv2

SSLCertificateFile /etc/apache2/ssl/mars-server.crt

SSLCertificateKeyFile /etc/apache2/ssl/mars-server.key

SSLCACertificateFile /etc/apache2/ssl/my-ca.crt

<Directory /var/www>

Order deny,allow

Allow from localhost

</Directory>

</VirtualHost>

<VirtualHost *:80>

ServerName localhost

DocumentRoot /var/www

<Directory /var/www> Order deny,allow

Allow from localhost

</Directory>

</VirtualHost>

以上配置保证了用户在访问 443 和 80 端口时可以看到相同的内容,而仅仅是使用的协议不同。修改好配置后,便可以重启 Apache 服务器,这时需要输入 mars-server.key 的密码。用浏览器访问

https://localhost/

这时应当看到一个d出对话框,让你确认是否信任该站点的证书,选择信任后,便可以查看该站点的内容了。

由于大多数 Apache 服务器都是在服务器启动时自动启动,为了避免在启动 Apache 时输入密码,可以用以下命令生成不加密的 mars-server.key 文件:

openssl rsa -in mars-server.key -out mars-server.key.insecure

用新生成的 mars-server.key.insecure 代替原有的 key 文件即可。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11531603.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-16
下一篇2023-05-16

发表评论

登录后才能评论

评论列表(0条)

    保存