HTTP证书申请,设置应用程序服务器使用HTTPS

https://certs.godaddy.com/repository/ 根证书和中级证书下载地址(godaddy)

######Godaddy购买证书生成csr文件##########

  1. *.reportide.com一个根域名的证书
openssl req -new -newkey rsa:2048 -nodes -keyout reportide.key -out reportide.csr

Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:BeiJing
Locality Name (eg, city) [Default City]:BeiJing
Organization Name (eg, company) [Default Company Ltd]:reportide
Organizational Unit Name (eg, section) []:devops
Common Name (eg, your name or your server's hostname) []:*.reportide.com
Email Address []:wangyp@me.net Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
  1. san证书:(一个证书绑定多个域名的方式)
openssl req -out reassurepay.csr -newkey rsa:2048 -nodes -keyout reassurepay.key -config san.conf

san.conf 文件内容
[ req ]
default_bits = 2048
distinguished_name = req_distinguished_name
req_extensions = req_ext
[ req_distinguished_name ]
countryName = CN
stateOrProvinceName = Beijing
localityName = Beijing
organizationName = reassurepay
commonName = www.reassurepay.com
[ req_ext ]
subjectAltName = @alt_names
[alt_names]
DNS.1 = www.reassurepay.com
DNS.2 = www1.reassurepay.com
DNS.3 = www.safetyboxpay.com

生成.csr文件,去Godaddy买证书,会得到两个.crt文件。

  • haproxy 配置ssl证书

Haproxy使用.pem格式证书,所以我们要把证书转换为.pem格式。
从godaddy下载apache的两个.crt格式证书,将两个证书合成一个.crt格式证书

cat cea.crt gd.crt > server.crt

在web服务器上创建证书时会生成一个key,保存为server.key(如果有这个.key文件可以跳过这一步,如果是自己按上面Godaddy购买证书生成csr文件就已经有了这个key文件

注:如果证书已经在iis服务器上使用且之前没有保存key.可以从iis服务器导出一份证书.server.pfx
把server.pfx证书放入linux系统中执行:(执行前请确定已安装了openssl)

openssl pkcs12 -in server.pfx -nocerts -nodes -out server.key

导出key server.key

最后把server.crt 和server.key 合成一个.pem格式证书

cat server.crt server.key | tee server.pem

把server.pem放入haproxy指定ssl证书目录。重启haproxy

  • tomcat 配置ssl证书

1.从godaddy下载apache证书解压出两个.crt格式证书,然后将两个.crt证书合成一个tomcat.crt证书

cat cea.crt gd.crt > tomcat.crt

2.从godaddy下载根证书和中级证书(https://certs.godaddy.com/repository/ & https://ssl-ccp.godaddy.com/repository/?origin=CALLISTO),然后将中级证书和根证书合并成一个ca.crt证书

cat gdig2_.crt gdroot-g2.crt > ca.crt

3.从godaddy获取key,如果证书已认证,从安装服务器上下载key,保存为tomcat.key(如果有这个.key文件可以跳过这一步,如果是自己按上面Godaddy购买证书生成csr文件就已经有了这个key文件

注:如果证书在iis服务器上使用.可以从iis服务器导出一份证书,tidebuy.pfx然后提取key

openssl pkcs12 -in tidebuy.pfx -nocerts -nodes -out tomcat.key

4.密钥和证书转换为PKCS12格式的证书

openssl pkcs12 -export -in tomcat.crt -inkey tomcat.key -out tomcat.p12 -name tomcat -chain -CAfile ca.crt

注:(运行命令后,请按照提示输入一个你可以记得住的密码。

关于这行命令的说明:
a.
tomcat.crt CA颁发的SSL证书,tomcat.key是pem格式的密钥,tomcat.p12是转换后的PKCS12格式证书。
b. tomcat
tomcat通过这个别名在keystore搜索对应的证书应用到网站上。
c. ca.crt是中级证书和根证书的合并文件,这样才能保证完整的证书链。)

5.导入PKCS12格式的证书和密钥 得到Java keystore

keytool -importkeystore -deststorepass 123456 -destkeypass 123456 -destkeystore tomcat.keystore -srckeystore tomcat.p12 -srcstoretype PKCS12 -srcstorepass 123456 -alias tomcat

6.将生成的tomcat.keystore证书放入tomcat配置文件指定的证书目录。重启tomcat

注:(第5条:导入PKCS12格式的证书和密钥 得到Java keystore

keytool -importkeystore -deststorepass <a_password_for_your_java_keystore> -destkeypass <a_password_for_the_key_in_the_keystore> -destkeystore tomcat.keystore -srckeystore <exported_private_key_and_cert.p12> -srcstoretype PKCS12 -srcstorepass <the_password_I_told_you_to_remember> -alias tomcat

说明:

运行命令的时候请不要包含任何括号<>;
<a_password_for_your_java_keystore> 这里替换成你自己的密码;
<a_password_for_the_key_in_the_keystore> 这里替换成你自己的密码 如果担心混淆, 可以都设置成相同的密码;
<exported_private_key_and_cert.p12> 刚才在第一步生成的PKCS12格式文件;
<the_password_I_told_you_to_remember> 刚才在第一步设置的密码;
通过这一步我们会生成keystore文件: tomcat.keystore )

https://sg.godaddy.com/zh/help/tomcat-csr-5239

/data/tomcat/conf/server.xml

<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" keystoreFile="/data/cert/tomcat.keystore" keystorePass="qwe123"
ciphers="TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_RC4_128_SHA,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA,SSL_RSA_WITH_RC4_128_SHA"
URIEncoding="UTF-8"
/>
  • Nginx 配置ssl证书

1.从godaddy下载apache证书并解压出两个crt证书,然后将两个crt证书合并为一个tidebuy.crt证书

cat cea.crt gd.crt > tidebuy.crt

2.从godaddy获取key,如果证书已认证,从安装服务器上下载key,保存为tidebuy.key(如果有这个.key文件可以跳过这一步,如果是自己按上面Godaddy购买证书生成csr文件就已经有了这个key文件

注:如果证书在iis服务器上使用.可以从iis服务器导出一份证书,tidebuy.pfx然后提取key

openssl pkcs12 -in tidebuy.pfx -nocerts -nodes -out tidebuy.key

3.将tidebuy.crt 和tidebuy.key放入nginx.conf配置文件中。 重启nginx

/etc/nginx/nginx.conf

server {
listen 443 ssl;
server_name localhost:8443; ssl on;
ssl_certificate /data/cert/tidebuy.crt;
ssl_certificate_key /data/cert/tidebuy.key; location / {
proxy_pass https://localhost:8443;
}
}
  • crt转换pem
openssl x509 -in tidebuy.crt -out tidebuy.pem
  • key转换pem
openssl rsa -in tidebuy.key -out tidebuy.pem
  • crt转换pfx
openssl pkcs12 -export -inkey reassurepay.key -in reassurepay.crt -out reassurepay.pfx

自制证书

nginx代理方式访问仓库

在部署 Nginx 部分,需要先生成自签名 SSL 证书,因为后面不想在 docker pull 的时候还要带一个端口!这里需要 2 个域名,一个用来展示 nexus 前台,另一个用做 docker 仓库,比如:

  • nexus 前台:repo.ald.com
  • docker 仓库:idocker.io

1.安装nginx

yum -y install nginx

2.生成证

这里推荐一个一键生成工具,大家可以尝试使用:https://github.com/Fishdrowned/ssl ,使用方法请参考作者说明。

Ps:如果你打算做外网仓库服务,那也可以去申请一个免费SSL证书,我这边是内部oa域名使用,所以只能用自签名证书了。

创建证书方式如下:

#直接切换到应用目录
# cd /etc/nginx/conf.d/ #下载工具
# git clone https://github.com/Fishdrowned/ssl.git
Cloning into 'ssl'...
remote: Enumerating objects: 106, done.
remote: Total 106 (delta 0), reused 0 (delta 0), pack-reused 106
Receiving objects: 100% (106/106), 171.53 KiB | 286.00 KiB/s, done.
Resolving deltas: 100% (48/48), done. #生成证书
# cd ssl
# ./gen.cert.sh idocker.io Removing dir out
Creating output structure
Done
Generating a 2048 bit RSA private key
......+++
......................................................................................................................+++
writing new private key to 'out/root.key.pem'
-----
Generating RSA private key, 2048 bit long modulus
...............................................................................+++
.................................+++
e is 65537 (0x10001)
Using configuration from ./ca.cnf
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName :PRINTABLE:'CN'
stateOrProvinceName :ASN.1 12:'Guangdong'
localityName :ASN.1 12:'Guangzhou'
organizationName :ASN.1 12:'Fishdrowned'
organizationalUnitName:ASN.1 12:'idocker.io'
commonName :ASN.1 12:'*.idocker.io'
Certificate is to be certified until Jun 12 04:29:18 2022 GMT (730 days) Write out database with 1 new entries
Data Base Updated Certificates are located in:
lrwxrwxrwx 1 root root 37 6月 12 12:29 /etc/nginx/conf.d/ssl/out/idocker.io/idocker.io.bundle.crt -> ./20200612-1229/idocker.io.bundle.crt
lrwxrwxrwx 1 root root 30 6月 12 12:29 /etc/nginx/conf.d/ssl/out/idocker.io/idocker.io.crt -> ./20200612-1229/idocker.io.crt
lrwxrwxrwx 1 root root 15 6月 12 12:29 /etc/nginx/conf.d/ssl/out/idocker.io/idocker.io.key.pem -> ../cert.key.pem
lrwxrwxrwx 1 root root 11 6月 12 12:29 /etc/nginx/conf.d/ssl/out/idocker.io/root.crt -> ../root.crt

3.配置nginx

vim /etc/nginx/nginx.conf   #默认nginx配置文件位置

# ip地址可以换成内网ip
upstream nexus_docker_get {
server 127.0.0.1:8089;
} upstream nexus_docker_put {
server 127.0.0.1:8088;
}
server {
listen 80;
listen 443 ssl;
server_name idocker.io;
access_log /var/log/nginx/idocker.io.log;
# 证书
ssl_certificate /etc/nginx/conf.d/ssl/out/idocker.io/idocker.io.crt; # 证书路径根据上面生成的来定
ssl_certificate_key /etc/nginx/conf.d/ssl/out/idocker.io/idocker.io.key.pem;
ssl_protocols TLSv1.1 TLSv1.2;
ssl_ciphers '!aNULL:kECDH+AESGCM:ECDH+AESGCM:RSA+AESGCM:kECDH+AES:ECDH+AES:RSA+AES:';
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
# disable any limits to avoid HTTP 413 for large image uploads
client_max_body_size 0;
# required to avoid HTTP 411: see Issue #1486 (https://github.com/docker/docker/issues/1486)
chunked_transfer_encoding on;
# 设置默认使用推送代理
set $upstream "nexus_docker_put";
# 当请求是GET,也就是拉取镜像的时候,这里改为拉取代理,如此便解决了拉取和推送的端口统一
if ( $request_method ~* 'GET') {
set $upstream "nexus_docker_get";
}
# 只有本地仓库才支持搜索,所以将搜索请求转发到本地仓库,否则出现500报错
if ($request_uri ~ '/search') {
set $upstream "nexus_docker_put";
}
index index.html index.htm index.php;
location / {
proxy_pass http://$upstream;
proxy_set_header Host $host;
proxy_connect_timeout 3600;
proxy_send_timeout 3600;
proxy_read_timeout 3600;
proxy_set_header X-Real-IP $remote_addr;
proxy_buffering off;
proxy_request_buffering off;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto http;
}
}

检查没有问题的话,就可以启动nginx了。重启报错:nginx: [error] invalid PID number "" in "/usr/local/var/run/nginx/nginx.pid"

nginx -t 
nginx -c /etc/nginx/nginx.conf #指定一个特定的nginx加载配置文件。
nginx -s reload

4.客户端配置

部署完成之后,我们就可以找一台测试机器进行测试了,不过因为我们刚刚定义的是内部使用的域名,所以需要在测试机器上写hosts解析,并将证书拷贝过去,否则会报不信任的错误。

在上文介绍的一键生成自签名工具中,会生成一个根证书,名称为/etc/nginx/conf.d/ssl/out/idocker.io/root.crt,我们将这个文件上传到客户端服务器的 /etc/docker/certs.d/idocker.io 目录即可(注意目录需要创建,最后的文件夹名称和仓库域名保持一致:idocker.io)。

docker和nginx在同一台机器:

#本地机器
echo "127.0.0.1 idocker.io" >> /etc/hosts
mkdir -p /etc/docker/certs.d/idocker.io
cp /etc/nginx/conf.d/ssl/out/idocker.io/root.crt /etc/docker/certs.d/idocker.io

docker和nginx不在同一台机器,现在到一台新主机192.168.75.10上测试:

# 主机192.168.75.10上的操作
echo "192.168.75.11 idocker.io" >> /etc/hosts
mkdir -p /etc/docker/certs.d/idocker.io # 然后去nexus主机上,将刚才的证书拷过来
scp root.crt root@192.168.75.10:/etc/docker/certs.d/idocker.io

接下来,就可以开始真正的使用了。

 

HTTP证书申请,设置应用程序服务器使用HTTPS的更多相关文章

  1. 阿里云域名的ssl证书申请与腾讯服务器域名的证书安装

    阿里云域名中的SSL证书申请,腾讯云服务器中的证书安装: 因为公司的与域名都在阿里云上面,服务器却用的是腾讯云的.记得前2年用阿里云管理平台的时候,域名的SSL证书都很好找,也许是长时间不用,找SSL ...

  2. 免费ssl证书申请和在IIS上启用https的使用教程

    因为微信小程序开发涉及到ssl证书,所以折腾了几天的这个. 非常感谢”亚洲诚信-TrustAsia“公司的售后工程师黄工(QQ2355718943 TEL:021-58895880-663)提供的技术 ...

  3. 分享一个免费SSL证书申请网站,给网站开启https协议 | 张戈博客

    这些天,由于公司的业务需求,接触到了ssl证书和https协议.博客前几篇文章也分享了在WEB服务器上安装SSL证书,为网站开启https协议的教程,感兴趣的童鞋可以前往查看相关文章: <Lin ...

  4. nginx 设置自签名证书以及设置网址http强制转https访问

    自签名证书可以在自己的内网环境或者非对外环境使用,保证通信安装 1.生产证书 直接使用脚本生产: 中途会提示书如1次域名和4次密码,把一下文件保存为sh文件,赋予x权限后 直接执行,根据提示输入. # ...

  5. iOS 证书申请新步骤

    2018iOS完整的证书申请和打包过程 - 简书https://www.jianshu.com/p/2b3c2693f4f2

  6. 【服务器】Https服务配置

    1)利用openssl生成证书 2)再次修改nginx配置文件nginx.conf中的server配置 ① 是默认监听http请求的8080端口的 server    (再次修改,第一次是在 用ngi ...

  7. 小程序证书申请FAQ

    1. 帮别人开发小程序, 先把你的微信号加到成员里, 并给予开发者权限,体验者权限,登录,数据分析,开发管理,开发设置 2. 需要https, 不能用windows2003,必须2008以上,用IIS ...

  8. 微信小程序之后台https域名绑定以及免费的https证书申请

    微信小程序在11月3号发布了,这是一个全新的生态,没有赶上微信公众号红利的开发者,运营者可别错过这趟车了. 但是微信的后台需要全https,之前我还不相信,后台注册了后进后台才发现,服务器配置如下图 ...

  9. Startcom SSL证书申请 IIS设置 配置 攻略

    申请具体参考:http://www.cnblogs.com/yibinboy/p/6137426.html 制作要导入服务器IIS上的证书. 点击控制面板的左上角的TOOL BOX,然后点击Creat ...

随机推荐

  1. Java 14 新功能介绍

    不做标题党,认认真真写个文章. 文章已经收录在 Github.com/niumoo/JavaNotes 和未读代码博客,点关注,不迷路. Java 14 早在 2019 年 9 月就已经发布,虽然不是 ...

  2. 1549页Android最新面试题含答案

    在今年年初的疫情中,成了失业人员之一,于是各种准备面试,发现面试题网上很多,但是都是很凌乱的,而且一个地方一点,没有一个系统的面试题库,有题库有的没有答案或者是答案很简洁,没有达到面试的要求.所以一直 ...

  3. Docker入门第一章

    Docker为什么出现? 一款产品:开发到上线 两套环境!应用环境,应用配置! 可能在开发环境你的产品是正常的,但是到了线上环境你的产品可能就会出现各种原因,或许是因为环境的不同,也可能是因为配置的不 ...

  4. HttpClient执行post请求

    public class Httpclient_post { private ResourceBundle bundle; private String url; private BasicCooki ...

  5. DVWA靶场之XSS(Reflected)通关

    反射型xss Low: <?php header ("X-XSS-Protection: 0"); // Is there any input? if( array_key_ ...

  6. Centos7-编译安装zlib

    1.解压并进入zlib目录tar xf zlib-1.2.11.tar.gz cd zlib-1.2.11 2.查看编辑参数[root@manage zlib-1.2.11]#./configure ...

  7. mysqldump备份总结

    常用的备份参数 -A 备份全库 -B 备某一个数据库下的所有表 -R, --routines 备份存储过程和函数数据 --triggers 备份触发器数据 --master-data={1|2} 告诉 ...

  8. Socket 网络编程和IO模型

    最近做了一个织机数据采集的服务器程序. 结构也非常简单,织机上的嵌入式设备,会通过Tcp 不停的往服务器发送一些即时数据.织机大改有个几十台到几百台不定把 刨去业务,先分析一下网络层的大概情况.每台织 ...

  9. WPF设计自定义控件

    在实际工作中,WPF提供的控件并不能完全满足不同的设计需求.这时,需要我们设计自定义控件. 这里LZ总结一些自己的思路,特性如下: Coupling UITemplate Behaviour Func ...

  10. uwp 之资源的访问

    访问image资源 ----------------------------------------------------------------------------- BitmapImage ...