oss对图片基本处理

招晓贤

AI engine @ Facebook

基本概念

以图片分享网站为原型。该网站拥有大量静态文件,作为一个图片分享平台,需要根据用户请求,实时地将用户的原图在线转换成需要的图片。本实验使用ECS作为Web服务端,使用OSS服务作为图片存储,解决了图片在线处理的问题。由于使用OSS的图片处理功能需要进行域名绑定,事先已将OSS bucket和指定的ECS Web服务器端进行域名绑定,并进行CNAME配置。配置完成后,即可通过ECS Web服务端域名访问OSS bucket保存的静态数据。

img

整个流程是

完成此实验后,可以掌握的能力有:

  1. 使用OSS Java SDK上传图片到OSS bucket;

  2. 使用OSS Java SDK进行图片缩放和水印处理;

  3. 使用域名访问OSS bucket中的原始图片和处理后的图片。

img

负载均衡监听

负载均衡提供四层(TCP/UDP协议)和七层(HTTP/HTTPS协议)监听,您可根据应用场景选择监听协议:

负载均衡四层监听将请求直接转发到后端ECS实例,而且不修改标头。

负载均衡七层监听原理上是反向代理的一种实现,客户端HTTP请求到达负载均衡监听后,负载均衡服务器会通过与后端ECS建立TCP连接,即再次通过新TCP连接HTTP协议访问后端,而不是直接转发报文到后端ECS。 img

HTTP请求转化为HTTPS请求

通过重定向的方式将来自 HTTP 请求转发到 HTTPS,实现用户直接通过输入负载均衡 IP 地址就可以直接访问网站。

  1. 通过本地远程连接服务,远程登录到 我的实验资源 中的 Web服务器01 ECS实例
  2. 输入如下命令,进入 Nginx 配置文件的编辑页面。
vim etc/nginx/nginx.conf
  1. 清空 85 行到 94 行的注释 # ,如下图所示: img

  2. 修改 rewrite 的参数信息,将 xxx.xxx.xxx.xxx 替换为 实验资源 提供的 负载均衡 的 IP地址 。 在真实的工作环境中,若使用域名访问,请将此处的 https://xxx.xxx.xxx.xxx 替换为 https 协议访问的域名。例如:https://lab.aliyunedu.net。

完成后,保存:wq

  1. 重启nginx
service nginx restart

同理修改web服务器2 (一般lbs后面至少配搭2台服务器)

购买证书流程 1)通过在阿里云管理台,进入 证书服务 的管理控制台。 2)点击右上角的 购买证书 。 3)在证书购买页面,证书类型 选择 免费DV SSL 。 4)其余保持默认,完成后,点击 立即购买 。 5)点击 去支付 。 6)点击 确认支付 7)

  1. 提示 恭喜,支付成功 ,关闭购买页面。
  2. 返回 证书服务 管理控制台,在我的订单中,查看到新购买的证书 状态 为 待完成
  3. 通过如下步骤,在本地服务器上生成证书的 .csr 文件和 .key 文件
    1. 在本地Linux操作系统的服务器中,执行如下命令,生成 2048 位的加密私钥。
    openssl genrsa -out ca.key 2048
    1. 执行如下命令,生成 证书签名请求(CSR)。
    openssl req -new -key ca.key -out ca.csr
  4. 通过如下步骤,补全阿里云上购买的证书信息: 1)返回阿里云 证书服务 的管理控制台,并点击新购证书右侧的 补全 。 2)在 填写域名信息 页面,输入证书绑定的域名,例如:lab.aliyunedu.net。点击 下一步 。 3)在 填写个人信息 页面,输入个人信息。完成后,点击 下一步 。 4)在 上传相关信息 页面,选择 自己生成CSR 。 5)在本地服务器中,输入如下命令,查看 ca.csr 文件内容。
cat ca.csr

6)粘贴 ca.csr 文件内容到 请输入上传的CSR文件 下方的文本框中。完成后,点击 保存 。 7)点击页面右下角的 提交审核 。 8)页面提示信息,点击 确认 。 9)此时,证书的 状态变为 审核中 。

  1. 通过如下步骤,签发新购证书。

1)等待一段时间,邮箱收到一封证书相关的邮件。查看 主机记录 和 记录值 。 2)进入域名解析页面,添加一条解析。 3)设置 记录类型 为 CNAME ,并输入拷贝的 主机记录 和 记录值 。 4)完成后,点击 保存 。 5)返回 证书服务 管理控制台。等待一段时间,新购的证书 状态 将变为 已签发 ,此时证书可用。 6. 点击证书右侧的 下载 ,根据本地部署的服务器,获取相应的 .pem 格式证书内容,并查看证书的使用方法。

上传证书 教程连接

  1. 通过如下步骤,进入 负载均衡 的 证书管理 页面。

1)在阿里云管理控制台,依次顶部导航栏处的 产品与服务 ,并依次选择 云计算基础服务 ---> 网络 ---> 负载均衡 ,进入负载均衡管理控制台。

2)点击左侧栏的 证书管理 ,进入证书管理页面。

  1. 通过如下步骤,将证书上传到负载均衡服务中。

1)点击右上角的 创建证书 。 2)输入 证书名称 ,例如:test-ca。

3)勾选证书使用的地域,例如:华北2 等。

说明:可勾选多个地域,例如:华北2 ,华东1 。

4)证书类型 选择 服务器证书 。

5)证书内容 输入证书的 .pem 格式文件内容。

6)私钥 ,输入证书的 .key 文件内容。

7)完成后,点击 确认 。

8)在证书管理页面,可以查看到证书的详细信息。

  1. 最后,在绑定证书的域名中,添加 负载均衡实例IP地址的解析,就可以实现 HTTPS 协议的加密访问。

负载均衡的证书管理功能

针对 HTTPS 协议,提供统一的证书管理服务,证书无需上传到后端 ECS,解密处理在负载均衡上进行,降低后端 ECS CPU 开销。

证书格式要求 申请的证书为 linux 环境下 pem 格式的证书。负载均衡不支持其他格式的证书。

如果是通过 root CA 机构颁发的证书, 您拿到的证书为唯一的一份,不需要额外的证书,配置的站点即可被浏览器等访问设备认为可信。 如果是通过中级 CA 机构颁发的证书,您拿到的证书文件包含多份证书,需要人为的将服务器证书与中间证书合并在一起上传。

拼接规则为:服务器证书放第一份,中间证书放第二份,中间不要有空行。

如果是通过中级 CA 机构颁发的证书,您拿到的证书文件包含多份证书,需要人为的将服务器证书与中间证书合并在一起上传。

拼接规则为:服务器证书放第一份,中间证书放第二份,中间不要有空行。

如果是通过中级 CA 机构颁发的证书,您拿到的证书文件包含多份证书,需要人为的将服务器证书与中间证书合并在一起上传。

拼接规则为:服务器证书放第一份,中间证书放第二份,中间不要有空行。

如果是通过中级 CA 机构颁发的证书,您拿到的证书文件包含多份证书,需要人为的将服务器证书与中间证书合并在一起上传。

拼接规则为:服务器证书放第一份,中间证书放第二份,中间不要有空行。

c. 每一份证书遵守第一点关于证书的格式说明;

3)RSA 私钥规则:

a. [——-BEGIN RSA PRIVATE KEY——-, ——-END RSA PRIVATE KEY——-] 开头结尾;请将这些内容一并上传。

b. 每行64字符,最后一行长度可以不足64字符。

说明:如果您不是按照上述方案生成私钥,得到[——-BEGIN PRIVATE KEY——-, ——-END PRIVATE KEY——-] 这种样式的私钥,您可以按照如下方式转换:

首先,运行以下命令

openssl rsa -in old_server_key.pem -out new_server_key.pem

然后,将 new_server_key.pem 的内容与证书一起上传。

转换证书格式 负载均衡只支持 PEM 格式的证书,其他格式的证书需要转换成 PEM 格式后,才能上传到负载均衡中。建议通过 openssl 工具进行转换。本文提供了使用 openssl 将以下几种比较流行的证书格式转换为 PEM 格式的方法。

1)DER 转换为 PEM

运行以下命令进行证书转化:

openssl x509 -inform der -in certificate.cer -out certificate.pem

运行以下命令进行私钥转化:

openssl rsa -inform DER -outform PEM -in privatekey.der -out privatekey.pem

2)P7B 转换为 PEM

运行以下命令进行证书转化:

openssl pkcs7 -print_certs -in incertificat.p7b -out outcertificate.cer

获取 outcertificat.cer 里面 [——-BEGIN CERTIFICATE——-, ——-END CERTIFICATE——-] 的内容作为证书上传。

3)PFX 转换为PEM

运行以下命令提取私钥:

openssl pkcs12 -in certname.pfx -nocerts -out key.pem -nodes

运行以下命令提取证书:

openssl pkcs12 -in certname.pfx -nokeys -out cert.pem