• 关于

    openssl 解析证书

    的搜索结果

问题

请教关于Http与Https碰到的问题

两个协议的默认端口 在申请的域名处一般要配制域名对应的ip地址。那么,在访问这个域名的时候,如果是 http://域名,就默认解析到 http://ip:80 https://域名 是不是就默认解析到 https://ip:443证书问题 ...
落地花开啦 2019-12-01 20:00:15 1019 浏览量 回答数 1

问题

证书安装后访问网站提示您的连接不安全

如图显示使用在线工具测试提示无法找到根证书DNS解析到360网站卫士了。我申请的证书是pem格式的,360网站卫士不支持pem,只支持crt格式,服务器是LNMP的环境。我用openssl x509 -in cert/123456.pem ...
鹤城人 2019-12-01 19:41:09 2343 浏览量 回答数 2

回答

报错原因 1、支付宝CA根证书文件路径(alipay_root_cert_path)错误; 2、支付宝CA根证书证书设置错误; 3、签名方式sign_type值设置错误; 4、php语言服务端sdk版本过低; 排查方案 1、支付宝根证书路径设置错误 支付宝CA根证书文件路径(alipay_root_cert_path)路径存在问题,建议检查路径传值是否正确; (1)文件路径需设置绝对路径; (2)核实对应的文件路径是否存在CA根证书文件; 2、支付宝根证书引用错误 alipay_root_cert_path设置路径对象错误,不是支付宝根证书 注:支付宝CA根证书文件,需要点击进入,选择使用的应用,再点击应用信息, 如图: 然后在“接口加密方式”中的“支付宝根证书”位置,点击“下载证书”。 如图: 3、sign_type设置错误 公钥证书方式方法做请求,sign_type必须是sign_type=RSA2; 4、php语言服务端sdk版本过低 php语言服务端sdk版本4.2.0以下的版本存在openssl兼容性问题,如果alipay_root_cert_sn解析的值存在下划线_后面以0X开头的会出现解析错误的情况; 例如:alipay_root_cert_sn=687b59193f3f462dd5336e5abf83c5d8_02941eef3187dddf3d3b83462e1dfcf6 解决方案:需要升级php语言服务端sdk,升级到sdk4.2.0以上即可.
保持可爱mmm 2020-05-05 17:04:04 0 浏览量 回答数 0

问题

nginx配置https无法开启443

1. yum install gcc-c++ 2.yum install -y pcre pcre-devel 3.yum install -y zlib zlib-devel ...
忆无痕 2019-12-01 19:34:05 268 浏览量 回答数 2

回答

当前容器服务Kubernetes集群支持多种应用访问的形式,最常见形式如SLB:Port、NodeIP:NodePort和域名访问等。Kubernetes集群默认不支持HTTPS访问,如果用户希望能够通过HTTPS进行应用的访问,容器服务和阿里云负载均衡服务为您提供安全的HTTPS访问。本文旨在通过实际案例演示的HTTPS访问配置,帮助用户在容器服务Kubernetes中配置自己的证书。 前提条件 您已创建一个Kubernetes集群,参见创建Kubernetes集群。 您已经通过SSH连接到Master节点,参见SSH 访问 Kubernetes 集群。 连接到Master节点后,创建集群的服务器证书,包括公钥证书和私钥。您可通过以下命令快速创建。 $ openssl genrsa -out tls.key 2048 Generating RSA private key, 2048 bit long modulus ................................................................+++ ........................................................................................+++ e is 65537 (0x10001) $ openssl req -sha256 -new -x509 -days 365 -key tls.key -out tls.crt You are about to be asked to enter information that will be incorporated ... Country Name (2 letter code) [XX]:CN State or Province Name (full name) []:zhejiang Locality Name (eg, city) [Default City]:hangzhou Organization Name (eg, company) [Default Company Ltd]:alibaba Organizational Unit Name (eg, section) []:test Common Name (eg, your name or your server's hostname) []:foo.bar.com #注意,您需要正确配置域名。 Email Address []:a@alibaba.com 背景信息 根据访问的方式不同,当前可以分为两种配置证书的方式: 在前端SLB上配置证书 在Ingress中配置证书 在SLB上配置HTTPS证书 该方式有如下特点: 优点: 证书配置在SLB上,为应用外部访问的入口,在集群内部进行应用的访问依然用的是http访问方式。 缺点:需要维护较多的域名与IP地址的对应关系。 适用场景:应用不使用Ingress暴露访问方式,通过LoadBalancer类型的Service进行应用访问的暴露。 准备工作 您已在该Kubernetes集群中创建一个Tomcat应用,该应用采用LoadBalancer类型的服务(service)对外提供访问。参见创建服务。 示例 登录容器服务管理控制台。 单击左侧导航栏中路由与负载均衡 > 服务,选择所需集群和命名空间,查看预先创建的tomcat示例应用。如下图所示创建的tomcat应用名称为tomcat,服务名称为tomcat-svc。其中,服务类型为LoadBalancer,暴露的服务端口为8080。 路由与负载均衡 单击外部端点,您可通过IP:Port的方式访问tomcat应用。 外部端点 登录负载均衡管理控制台。 在控制台左侧导航栏,选择实例 > 实例管理,在服务地址栏中,找到与tomcat-svc服务外部端点对应的负载均衡实例,单击操作列中的监听配置向导。 开始进行负载均衡配置,首先进行配置监听协议。选择HTTPS协议,监听端口设置为443,然后单击下一步。 配置SSL证书。 首先单击新建服务器证书。 新建服务器证书 在弹出的创建证书页面中,选择证书来源。本例中选择上传第三方签发证书,然后单击下一步。 在上传第三方签发证书页面中,配置证书名称,选择证书部署区域,然后在公钥证书和私钥栏中输入您创建的服务器公钥证书和私钥,最后单击确定。 公钥证书 然后在选择服务器证书栏选择刚创建的服务器证书。 单击下一步。 配置后端服务器,默认情况下已添加服务器,您需要配置后端服务器端口,用于监听tomcat-svc服务,最后单击下一步。 说明 您需要在容器服务Web界面找到该服务对应的NodePort,并在后端服务器端口中配置该端口。 配置健康检查,然后单击下一步。本例中采用默认配置。 进行配置审核,确认配置正确后,单击提交。 配置成功后,单击确定。 返回实例管理页面,您查看该实例,HTTPS:443监听规则已经生成。 访问HTTPS的tomcat应用,在浏览器中输入https://slb_ip并进行访问。 说明 如果在证书中加入了域名验证,可以使用域名进行访问。同时我们没有删除tcp:8080,所以通过slb_ip:8080也可以访问。 实例管理 在Ingress上配置证书 该方法有以下特点: 优点:无需改动SLB的配置。每一个应用都可以通过Ingress管理自己的证书,互不干扰。 适用场景:每个应用都需要单独的证书进行访问,或者集群中存在需要证书才能访问的应用。 准备工作 您已在该Kubernetes集群中创建一个Tomcat应用,该应用的服务(Service)采用ClusterIP的方式提供访问。本例中准备使用Ingress对外提供HTTPS访问服务。 示例 登录到Kubernetes集群的Master节点,根据准备好的证书创建secret。 说明 在这里需要正确配置域名,否则后续通过HTTPS访问会有问题。 kubectl create secret tls secret-https --key tls.key --cert tls.crt 登录容器服务管理控制台。 在左侧导航栏中,选择路由与负载均衡 > 路由,选择所需的集群和命名空间,单击右上角创建。 可选: 在创建路由对话框中,配置可HTTPS访问的路由,完成后单击确定。 更多详细的路由配置信息,请参见通过界面创建路由(Ingress)。本例中进行如下配置。 名称:输入该路由的名称。 域名:即是前面配置的正确域名,与ssl证书中配置的保持一致。 服务:选择tomcat应用对应的service,端口为8080。 开启TLS:开启TLS后,选择已创建的secret。 配置证书 您也可采用yaml文件的方式创建路由(Ingress),本例对应的yaml示例文件如下: apiVersion: extensions/v1beta1 kind: Ingress metadata: name: tomcat-https spec: tls: hosts: foo.bar.com secretName: secret-https rules: host: foo.bar.com http: paths: path: / backend: serviceName: tomcat-svc servicePort: 8080 返回路由列表,查看创建的路由(Ingress),本例中域名为foo.bar.com,并查看端点和域名,您也可进入路由详情页进行查看。 说明 本例中以foo.bar.com作为测试域名,您需要在hosts文件中创建一条记录。 47.110.119.203 foo.bar.com #其中IP地址即是路由的端点。 路由列表 在浏览器中访问https://foo.bar.com。 说明 由于创建了TLS证书访问,所以要用HTTPS来进行域名访问,针对该应用,本例以foo.bar.com为示例,在本地进行解析。在具体使用场景中,请使用备案过的域名。 路由访问
1934890530796658 2020-03-31 15:46:05 0 浏览量 回答数 0

问题

在 Ubuntu 上安装 Monit 并更新至最新版

相信很多人都遇到过 “502错误”、 “2002 数据库无法连接” “ERR_NAME_NOT_RESOLVED” 等问题吧,一般来说是 Apache Httpd、Nginx、PHP、MySQL 等软件崩溃或者不稳定出现了相关...
妙正灰 2019-12-01 21:23:51 3152 浏览量 回答数 0

回答

在阿里云Serverless Kubernetes集群中,我们可以通过LoadBalancer Service对外提供四层服务访问,同样您也可以通过Ingress来对外提供七层服务访问,下面介绍如何在Serverless Kubernetes集群中提供七层域名服务访问。 前提条件 您已创建一个serverless集群,集群的VPC需要配置NAT网关,从而访问外网,下载容器镜像。 您已通过kubectl连接到集群,参见通过 kubectl 连接 Kubernetes 集群。 使用说明 不指定SLB实例情况下系统会自动帮您生成一个公网SLB实例。 SLB实例默认前端监听端口为80(HTTP协议)和443(HTTPS协议)。 SLB实例HTTPS证书默认会初始化为第一个创建的Ingress配置的TLS证书,否则会初始化为系统默认证书;您可根据需要自行在SLB控制台上进行修改。 当您指定使用已存在的SLB实例时,要求该SLB实例规格必须是性能保障型(支持ENI);同时确保80和443端口当前没有其他服务使用。 使用默认生成的SLB实例 当您不指定SLB实例时,系统会在第一个Ingress创建时自动生成一个性能保障型的公网SLB实例。 部署测试服务。 创建并拷贝如下内容到cafe-service.yaml文件中,并执行kubectl apply -f cafe-service.yaml命令,部署一个coffee service和tea service。 apiVersion: extensions/v1beta1 kind: Deployment metadata: name: coffee spec: replicas: 2 selector: matchLabels: app: coffee template: metadata: labels: app: coffee spec: containers: - name: coffee image: registry.cn-hangzhou.aliyuncs.com/acs-sample/nginxdemos:latest ports: - containerPort: 80 apiVersion: v1 kind: Service metadata: name: coffee-svc spec: ports: - port: 80 targetPort: 80 protocol: TCP selector: app: coffee clusterIP: None apiVersion: extensions/v1beta1 kind: Deployment metadata: name: tea spec: replicas: 1 selector: matchLabels: app: tea template: metadata: labels: app: tea spec: containers: - name: tea image: registry.cn-hangzhou.aliyuncs.com/acs-sample/nginxdemos:latest ports: - containerPort: 80 apiVersion: v1 kind: Service metadata: name: tea-svc labels: spec: ports: - port: 80 targetPort: 80 protocol: TCP selector: app: tea clusterIP: None 当界面呈现如下结果时,表示部署完成。 deployment "coffee" created service "coffee-svc" created deployment "tea" created service "tea-svc" created 执行kubectl get svc,deploy命令,查看服务状态。 NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE svc/coffee-svc ClusterIP 80/TCP 1m svc/tea-svc ClusterIP 80/TCP 1m NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE deploy/coffee 2 2 2 2 1m deploy/tea 1 1 1 1 1m 配置 Ingress。 创建并拷贝如下内容到cafe-ingress.yaml文件中,并执行kubectl apply -f cafe-ingress.yaml命令,通过Ingress配置coffee service和tea service对外暴露的域名和Path路径。 apiVersion: extensions/v1beta1 kind: Ingress metadata: name: cafe-ingress spec: rules: # 配置七层域名 - host: foo.bar.com http: paths: # 配置Context Path - path: /tea backend: serviceName: tea-svc servicePort: 80 # 配置Context Path - path: /coffee backend: serviceName: coffee-svc servicePort: 80 当界面呈现如下结果时,表示Ingress配置完成。 ingress "cafe-ingress" created 执行kubectl get ing,获取SLB实例IP。 NAME HOSTS ADDRESS PORTS AGE cafe-ingress foo.bar.com 139...** 80 1m 测试服务访问。 说明 目前我们需要自行将域名解析到SLB实例IP上。 本例中在hosts中添加一条DNS域名解析规则,用于测试服务访问。建议您在工作环境中对域名进行备案。 139...** foo.bar.com 通过浏览器测试访问coffee服务。 访问coffee服务 通过命令行方式测试访问coffee服务。 curl -H "Host: foo.bar.com" http://139.../coffee 通过浏览器测试访问tea服务。 访问tea服务 通过命令行方式测试访问tea服务。 curl -H "Host: foo.bar.com" http://139.../tea 使用指定的SLB实例 您可以通过注释service.beta.kubernetes.io/alicloud-loadbalancer-id来指定使用已存在的SLB实例,但要求该SLB实例必须为性能保障型规格(支持ENI)。 说明 系统会自动初始化SLB实例的80和443端口,请确保当前没有其他服务使用。 部署测试服务。 创建并拷贝如下内容到tomcat-service.yml文件中,并执行kubectl apply -f tomcat-service.yml命令,部署一个tomcat测试应用。 apiVersion: extensions/v1beta1 kind: Deployment metadata: name: tomcat spec: replicas: 1 selector: matchLabels: run: tomcat template: metadata: labels: run: tomcat spec: containers: - image: tomcat:7.0 imagePullPolicy: Always name: tomcat ports: - containerPort: 8080 protocol: TCP restartPolicy: Always apiVersion: v1 kind: Service metadata: name: tomcat spec: ports: - port: 8080 protocol: TCP targetPort: 8080 selector: run: tomcat clusterIP: None 当界面呈现如下结果时,表示tomcat应用部署完成。 deployment "tomcat" created service "tomcat" created 执行kubectl get svc,deploy tomcat,查看应用的状态。 NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE svc/tomcat ClusterIP 8080/TCP 1m NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE deploy/tomcat 1 1 1 1 1m 申请SLB实例。 您需要在集群同Region下自行申请一个性能保障型SLB实例(例如slb.s2.small),可以是私网也可以是公网(依据具体需求)。参见创建负载均衡实例。本例中申请一个公网SLB实例,记录SLB实例的ID。 申请SLB实例 配置TLS证书。 您需要配置TLS证书实现HTTPS访问。 执行如下命令,生成测试TLS证书。 $ openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout tls.key -out tls.crt -subj "/CN=bar.foo.com/O=bar.foo.com"# 创建TLS证书Secret $ kubectl create secret tls cert-example --key tls.key --cert tls.crt secret "cert-example" created 执行如下命令,查看新建的TLS证书。 $ kubectl get secret cert-example NAME TYPE DATA AGE cert-example kubernetes.io/tls 2 12s 说明 系统自动依据第一个创建的Ingress的TLS证书来初始化SLB的HTTPS默认证书,若需要修改HTTPS默认证书,可在SLB控制台自行修改;若需配置多个证书,可在SLB控制台HTTPS监听扩展域名下自行添加。 配置 Ingress。 创建并拷贝如下内容到tomcat-ingress.yml文件中,并执行kubectl apply -f tomcat-ingress.yml命令,配置 Ingress。 apiVersion: extensions/v1beta1 kind: Ingress metadata: name: tomcat-ingress annotations: # 配置使用指定的SLB实例(SLB ID) service.beta.kubernetes.io/alicloud-loadbalancer-id: lb-xxxxxxxxxx ##替换为你的SLB ID service.beta.kubernetes.io/alicloud-loadbalancer-force-override-listeners: "true" spec: tls: - hosts: - bar.foo.com # 配置TLS证书 secretName: cert-example rules: # 配置七层域名 - host: bar.foo.com http: paths: # 配置Context Path - path: / backend: serviceName: tomcat servicePort: 8080 当界面呈现如下结果时,表示tomcat-ingress配置完成。 ingress "tomcat-ingress" created 执行kubectl get ing tomcat-ingress命令,获取SLB IP地址。 NAME HOSTS ADDRESS PORTS AGE tomcat-ingress bar.foo.com 47...** 80, 443 1m 测试服务访问。 说明 目前我们需要自行将域名解析到SLB实例IP上。 本例中在hosts中添加一条DNS域名解析规则,用于测试服务访问。建议您在工作环境中对域名进行备案。 47...** bar.foo.com 通过浏览器测试访问tomcat服务。 访问tomcat 通过命令行方式测试访问tomcat服务。 curl -k -H "Host: bar.foo.com" https://47.*..**
1934890530796658 2020-03-31 20:50:39 0 浏览量 回答数 0

回答

在阿里云Serverless Kubernetes集群中,我们可以通过LoadBalancer Service对外提供四层服务访问,同样您也可以通过Ingress来对外提供七层服务访问,下面介绍如何在Serverless Kubernetes集群中提供七层域名服务访问。 前提条件 您已创建一个serverless集群,集群的VPC需要配置NAT网关,从而访问外网,下载容器镜像。 您已通过kubectl连接到集群,参见通过 kubectl 连接 Kubernetes 集群。 使用说明 不指定SLB实例情况下系统会自动帮您生成一个公网SLB实例。 SLB实例默认前端监听端口为80(HTTP协议)和443(HTTPS协议)。 SLB实例HTTPS证书默认会初始化为第一个创建的Ingress配置的TLS证书,否则会初始化为系统默认证书;您可根据需要自行在SLB控制台上进行修改。 当您指定使用已存在的SLB实例时,要求该SLB实例规格必须是性能保障型(支持ENI);同时确保80和443端口当前没有其他服务使用。 使用默认生成的SLB实例 当您不指定SLB实例时,系统会在第一个Ingress创建时自动生成一个性能保障型的公网SLB实例。 部署测试服务。 创建并拷贝如下内容到cafe-service.yaml文件中,并执行kubectl apply -f cafe-service.yaml命令,部署一个coffee service和tea service。 apiVersion: extensions/v1beta1 kind: Deployment metadata: name: coffee spec: replicas: 2 selector: matchLabels: app: coffee template: metadata: labels: app: coffee spec: containers: - name: coffee image: registry.cn-hangzhou.aliyuncs.com/acs-sample/nginxdemos:latest ports: - containerPort: 80 apiVersion: v1 kind: Service metadata: name: coffee-svc spec: ports: - port: 80 targetPort: 80 protocol: TCP selector: app: coffee clusterIP: None apiVersion: extensions/v1beta1 kind: Deployment metadata: name: tea spec: replicas: 1 selector: matchLabels: app: tea template: metadata: labels: app: tea spec: containers: - name: tea image: registry.cn-hangzhou.aliyuncs.com/acs-sample/nginxdemos:latest ports: - containerPort: 80 apiVersion: v1 kind: Service metadata: name: tea-svc labels: spec: ports: - port: 80 targetPort: 80 protocol: TCP selector: app: tea clusterIP: None 当界面呈现如下结果时,表示部署完成。 deployment "coffee" created service "coffee-svc" created deployment "tea" created service "tea-svc" created 执行kubectl get svc,deploy命令,查看服务状态。 NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE svc/coffee-svc ClusterIP 80/TCP 1m svc/tea-svc ClusterIP 80/TCP 1m NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE deploy/coffee 2 2 2 2 1m deploy/tea 1 1 1 1 1m 配置 Ingress。 创建并拷贝如下内容到cafe-ingress.yaml文件中,并执行kubectl apply -f cafe-ingress.yaml命令,通过Ingress配置coffee service和tea service对外暴露的域名和Path路径。 apiVersion: extensions/v1beta1 kind: Ingress metadata: name: cafe-ingress spec: rules: # 配置七层域名 - host: foo.bar.com http: paths: # 配置Context Path - path: /tea backend: serviceName: tea-svc servicePort: 80 # 配置Context Path - path: /coffee backend: serviceName: coffee-svc servicePort: 80 当界面呈现如下结果时,表示Ingress配置完成。 ingress "cafe-ingress" created 执行kubectl get ing,获取SLB实例IP。 NAME HOSTS ADDRESS PORTS AGE cafe-ingress foo.bar.com 139...** 80 1m 测试服务访问。 说明 目前我们需要自行将域名解析到SLB实例IP上。 本例中在hosts中添加一条DNS域名解析规则,用于测试服务访问。建议您在工作环境中对域名进行备案。 139...** foo.bar.com 通过浏览器测试访问coffee服务。 访问coffee服务 通过命令行方式测试访问coffee服务。 curl -H "Host: foo.bar.com" http://139.../coffee 通过浏览器测试访问tea服务。 访问tea服务 通过命令行方式测试访问tea服务。 curl -H "Host: foo.bar.com" http://139.../tea 使用指定的SLB实例 您可以通过注释service.beta.kubernetes.io/alicloud-loadbalancer-id来指定使用已存在的SLB实例,但要求该SLB实例必须为性能保障型规格(支持ENI)。 说明 系统会自动初始化SLB实例的80和443端口,请确保当前没有其他服务使用。 部署测试服务。 创建并拷贝如下内容到tomcat-service.yml文件中,并执行kubectl apply -f tomcat-service.yml命令,部署一个tomcat测试应用。 apiVersion: extensions/v1beta1 kind: Deployment metadata: name: tomcat spec: replicas: 1 selector: matchLabels: run: tomcat template: metadata: labels: run: tomcat spec: containers: - image: tomcat:7.0 imagePullPolicy: Always name: tomcat ports: - containerPort: 8080 protocol: TCP restartPolicy: Always apiVersion: v1 kind: Service metadata: name: tomcat spec: ports: - port: 8080 protocol: TCP targetPort: 8080 selector: run: tomcat clusterIP: None 当界面呈现如下结果时,表示tomcat应用部署完成。 deployment "tomcat" created service "tomcat" created 执行kubectl get svc,deploy tomcat,查看应用的状态。 NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE svc/tomcat ClusterIP 8080/TCP 1m NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE deploy/tomcat 1 1 1 1 1m 申请SLB实例。 您需要在集群同Region下自行申请一个性能保障型SLB实例(例如slb.s2.small),可以是私网也可以是公网(依据具体需求)。参见创建负载均衡实例。本例中申请一个公网SLB实例,记录SLB实例的ID。 申请SLB实例 配置TLS证书。 您需要配置TLS证书实现HTTPS访问。 执行如下命令,生成测试TLS证书。 $ openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout tls.key -out tls.crt -subj "/CN=bar.foo.com/O=bar.foo.com"# 创建TLS证书Secret $ kubectl create secret tls cert-example --key tls.key --cert tls.crt secret "cert-example" created 执行如下命令,查看新建的TLS证书。 $ kubectl get secret cert-example NAME TYPE DATA AGE cert-example kubernetes.io/tls 2 12s 说明 系统自动依据第一个创建的Ingress的TLS证书来初始化SLB的HTTPS默认证书,若需要修改HTTPS默认证书,可在SLB控制台自行修改;若需配置多个证书,可在SLB控制台HTTPS监听扩展域名下自行添加。 配置 Ingress。 创建并拷贝如下内容到tomcat-ingress.yml文件中,并执行kubectl apply -f tomcat-ingress.yml命令,配置 Ingress。 apiVersion: extensions/v1beta1 kind: Ingress metadata: name: tomcat-ingress annotations: # 配置使用指定的SLB实例(SLB ID) service.beta.kubernetes.io/alicloud-loadbalancer-id: lb-xxxxxxxxxx ##替换为你的SLB ID service.beta.kubernetes.io/alicloud-loadbalancer-force-override-listeners: "true" spec: tls: - hosts: - bar.foo.com # 配置TLS证书 secretName: cert-example rules: # 配置七层域名 - host: bar.foo.com http: paths: # 配置Context Path - path: / backend: serviceName: tomcat servicePort: 8080 当界面呈现如下结果时,表示tomcat-ingress配置完成。 ingress "tomcat-ingress" created 执行kubectl get ing tomcat-ingress命令,获取SLB IP地址。 NAME HOSTS ADDRESS PORTS AGE tomcat-ingress bar.foo.com 47...** 80, 443 1m 测试服务访问。 说明 目前我们需要自行将域名解析到SLB实例IP上。 本例中在hosts中添加一条DNS域名解析规则,用于测试服务访问。建议您在工作环境中对域名进行备案。 47...** bar.foo.com 通过浏览器测试访问tomcat服务。 访问tomcat 通过命令行方式测试访问tomcat服务。 curl -k -H "Host: bar.foo.com" https://47.*..**
1934890530796658 2020-03-31 15:24:18 0 浏览量 回答数 0

回答

HTTPS基本原理 一、http为什么不安全。 http协议没有任何的加密以及身份验证的机制,非常容易遭遇窃听、劫持、篡改,因此会造成个人隐私泄露,恶意的流量劫持等严重的安全问题。 国外很多网站都支持了全站https,国内方面目前百度已经在年初完成了搜索的全站https,其他大型的网站也在跟进中,百度最先完成全站https的最大原因就是百度作为国内最大的流量入口,劫持也必然是首当其冲的,造成的有形的和无形的损失也就越大。关于流量劫持问题,我在另一篇文章中也有提到,基本上是互联网企业的共同难题,https也是目前公认的比较好的解决方法。但是https也会带来很多性能以及访问速度上的牺牲,很多互联网公司在做大的时候都会遇到这个问题:https成本高,速度又慢,规模小的时候在涉及到登录和交易用上就够了,做大以后遇到信息泄露和劫持,想整体换,代价又很高。 2、https如何保证安全 要解决上面的问题,就要引入加密以及身份验证的机制。 这时我们引入了非对称加密的概念,我们知道非对称加密如果是公钥加密的数据私钥才能解密,所以我只要把公钥发给你,你就可以用这个公钥来加密未来我们进行数据交换的秘钥,发给我时,即使中间的人截取了信息,也无法解密,因为私钥在我这里,只有我才能解密,我拿到你的信息后用私钥解密后拿到加密数据用的对称秘钥,通过这个对称密钥来进行后续的数据加密。除此之外,非对称加密可以很好的管理秘钥,保证每次数据加密的对称密钥都是不相同的。 但是这样似乎还不够,如果中间人在收到我的给你公钥后并没有发给你,而是自己伪造了一个公钥发给你,这是你把对称密钥用这个公钥加密发回经过中间人,他可以用私钥解密并拿到对称密钥,此时他在把此对称密钥用我的公钥加密发回给我,这样中间人就拿到了对称密钥,可以解密传输的数据了。为了解决此问题,我们引入了数字证书的概念。我首先生成公私钥,将公钥提供给相关机构(CA),CA将公钥放入数字证书并将数字证书颁布给我,此时我就不是简单的把公钥给你,而是给你一个数字证书,数字证书中加入了一些数字签名的机制,保证了数字证书一定是我给你的。 所以综合以上三点: 非对称加密算法(公钥和私钥)交换秘钥 + 数字证书验证身份(验证公钥是否是伪造的) + 利用秘钥对称加密算法加密数据 = 安全 3、https协议简介 为什么是协议简介呢。因为https涉及的东西实在太多了,尤其是一些加密算法,非常的复杂,对于这些算法面的东西就不去深入研究了,这部分仅仅是梳理一下一些关于https最基本的原理,为后面分解https的连接建立以及https优化等内容打下理论基础。 3.1 对称加密算法 对称加密是指加密和解密使用相同密钥的加密算法。它要求发送方和接收方在安全通信之前,商定一个密钥。对称算法的安全性依赖于密钥,泄漏密钥就意味着任何人都可以对他们发送或接收的消息解密,所以密钥的保密性对通信至关重要。 对称加密又分为两种模式:流加密和分组加密。 流加密是将消息作为位流对待,并且使用数学函数分别作用在每一个位上,使用流加密时,每加密一次,相同的明文位会转换成不同的密文位。流加密使用了密钥流生成器,它生成的位流与明文位进行异或,从而生成密文。现在常用的就是RC4,不过RC4已经不再安全,微软也建议网络尽量不要使用RC4流加密。 分组加密是将消息划分为若干位分组,这些分组随后会通过数学函数进行处理,每次一个分组。假设需要加密发生给对端的消息,并且使用的是64位的分组密码,此时如果消息长度为640位,就会被划分成10个64位的分组,每个分组都用一系列数学公式公式进行处理,最后得到10个加密文本分组。然后,将这条密文消息发送给对端。对端必须拥有相同的分组密码,以相反的顺序对10个密文分组使用前面的算法解密,最终得到明文的消息。比较常用的分组加密算法有DES、3DES、AES。其中DES是比较老的加密算法,现在已经被证明不安全。而3DES是一个过渡的加密算法,相当于在DES基础上进行三重运算来提高安全性,但其本质上还是和DES算法一致。而AES是DES算法的替代算法,是现在最安全的对称加密算法之一。分组加密算法除了算法本身外还存在很多种不同的运算方式,比如ECB、CBC、CFB、OFB、CTR等,这些不同的模式可能只针对特定功能的环境中有效,所以要了解各种不同的模式以及每种模式的用途。这个部分后面的文章中会详细讲。 对称加密算法的优、缺点: 优点:算法公开、计算量小、加密速度快、加密效率高。 缺点:(1)交易双方都使用同样钥匙,安全性得不到保证; (2)每对用户每次使用对称加密算法时,都需要使用其他人不知道的惟一钥匙,这会使得发收信双方所拥有的钥匙数量呈几何级数增长,密钥管理成为用户的负担。 (3)能提供机密性,但是不能提供验证和不可否认性。 3.2 非对称加密算法 在非对称密钥交换算法出现以前,对称加密一个很大的问题就是不知道如何安全生成和保管密钥。非对称密钥交换过程主要就是为了解决这个问题,使得对称密钥的生成和使用更加安全。 密钥交换算法本身非常复杂,密钥交换过程涉及到随机数生成,模指数运算,空白补齐,加密,签名等操作。 常见的密钥交换算法有RSA,ECDHE,DH,DHE等算法。涉及到比较复杂的数学问题,下面就简单介绍下最经典的RSA算法。RSA:算法实现简单,诞生于1977年,历史悠久,经过了长时间的破解测试,安全性高。缺点就是需要比较大的素数也就是质数(目前常用的是2048位)来保证安全强度,很消耗CPU运算资源。RSA是目前唯一一个既能用于密钥交换又能用于证书签名的算法。我觉得RSA可以算是最经典的非对称加密算法了,虽然算法本身都是数学的东西,但是作为最经典的算法,我自己也花了点时间对算法进行了研究,后面会详细介绍。 非对称加密相比对称加密更加安全,但也存在两个明显缺点: 1,CPU计算资源消耗非常大。一次完全TLS握手,密钥交换时的非对称解密计算量占整个握手过程的90%以上。而对称加密的计算量只相当于非对称加密的0.1%,如果应用层数据也使用非对称加解密,性能开销太大,无法承受。 2,非对称加密算法对加密内容的长度有限制,不能超过公钥长度。比如现在常用的公钥长度是2048位,意味着待加密内容不能超过256个字节。 所以公钥加密(极端消耗CPU资源)目前只能用来作密钥交换或者内容签名,不适合用来做应用层传输内容的加解密。 3.3 身份认证 https协议中身份认证的部分是由数字证书来完成的,证书由公钥、证书主体、数字签名等内容组成,在客户端发起SSL请求后,服务端会将数字证书发给客户端,客户端会对证书进行验证(验证查看这张证书是否是伪造的。也就是公钥是否是伪造的),并获取用于秘钥交换的非对称密钥(获取公钥)。 数字证书有两个作用: 1,身份授权。确保浏览器访问的网站是经过CA验证的可信任的网站。 2,分发公钥。每个数字证书都包含了注册者生成的公钥(验证确保是合法的,非伪造的公钥)。在SSL握手时会通过certificate消息传输给客户端。 申请一个受信任的数字证书通常有如下流程: 1,终端实体(可以是一个终端硬件或者网站)生成公私钥和证书请求。 2,RA(证书注册及审核机构)检查实体的合法性。如果个人或者小网站,这一步不是必须的。 3,CA(证书签发机构)签发证书,发送给申请者。 4,证书更新到repository(负责数字证书及CRL内容存储和分发),终端后续从repository更新证书,查询证书状态等。 数字证书验证: 申请者拿到CA的证书并部署在网站服务器端,那浏览器发起握手接收到证书后,如何确认这个证书就是CA签发的呢。怎样避免第三方伪造这个证书。答案就是数字签名(digital signature)。数字签名是证书的防伪标签,目前使用最广泛的SHA-RSA(SHA用于哈希算法,RSA用于非对称加密算法)数字签名的制作和验证过程如下: 1,数字签名的签发。首先是使用哈希函数对待签名内容进行安全哈希,生成消息摘要,然后使用CA自己的私钥对消息摘要进行加密。 2,数字签名的校验。使用CA的公钥解密签名,然后使用相同的签名函数对待签名证书内容进行签名并和服务端数字签名里的签名内容进行比较,如果相同就认为校验成功。 需要注意的是: 1)数字签名签发和校验使用的密钥对是CA自己的公私密钥,跟证书申请者提交的公钥没有关系。 2)数字签名的签发过程跟公钥加密的过程刚好相反,即是用私钥加密,公钥解密。 3)现在大的CA都会有证书链,证书链的好处一是安全,保持根CA的私钥离线使用。第二个好处是方便部署和撤销,即如果证书出现问题,只需要撤销相应级别的证书,根证书依然安全。 4)根CA证书都是自签名,即用自己的公钥和私钥完成了签名的制作和验证。而证书链上的证书签名都是使用上一级证书的密钥对完成签名和验证的。 5)怎样获取根CA和多级CA的密钥对。它们是否可信。当然可信,因为这些厂商跟浏览器和操作系统都有合作,它们的公钥都默认装到了浏览器或者操作系统环境里。 3.4 数据完整性验证 数据传输过程中的完整性使用MAC算法来保证。为了避免网络中传输的数据被非法篡改,SSL利用基于MD5或SHA的MAC算法来保证消息的完整性。 MAC算法是在密钥参与下的数据摘要算法,能将密钥和任意长度的数据转换为固定长度的数据。发送者在密钥的参与下,利用MAC算法计算出消息的MAC值,并将其加在消息之后发送给接收者。接收者利用同样的密钥和MAC算法计算出消息的MAC值,并与接收到的MAC值比较。如果二者相同,则报文没有改变;否则,报文在传输过程中被修改,接收者将丢弃该报文。 由于MD5在实际应用中存在冲突的可能性比较大,所以尽量别采用MD5来验证内容一致性。SHA也不能使用SHA0和SHA1,中国山东大学的王小云教授在2005年就宣布破解了 SHA-1完整版算法。微软和google都已经宣布16年及17年之后不再支持sha1签名证书。MAC算法涉及到很多复杂的数学问题,这里就不多讲细节了。 专题二--【实际抓包分析】 抓包结果: fiddler: wireshark: 可以看到,百度和我们公司一样,也采用以下策略: (1)对于高版本浏览器,如果支持 https,且加解密算法在TLS1.0 以上的,都将所有 http请求重定向到 https请求 (2)对于https请求,则不变。 【以下只解读https请求】 1、TCP三次握手 可以看到,我们访问的是 http://www.baidu.com/ , 在初次建立 三次握手的时候, 用户是去 连接 8080端口的(因为公司办公网做了代理,因此,我们实际和代理机做的三次握手,公司代理机再帮我们去连接百度服务器的80端口) 2、CONNECT 建立 由于公司办公网访问非腾讯域名,会做代理,因此,在进行https访问的时候,我们的电脑需要和公司代理机做 " CONNECT " 连接(关于 " CONNECT " 连接, 可以理解为虽然后续的https请求都是公司代理机和百度服务器进行公私钥连接和对称秘钥通信,但是,有了 " CONNECT " 连接之后,可以认为我们也在直接和百度服务器进行公私钥连接和对称秘钥通信。 ) fiddler抓包结果: CONNECT之后, 后面所有的通信过程,可以看做是我们的机器和百度服务器在直接通信 3、 client hello 整个 Secure Socket Layer只包含了: TLS1.2 Record Layer内容 (1)随机数 在客户端问候中,有四个字节以Unix时间格式记录了客户端的协调世界时间(UTC)。协调世界时间是从1970年1月1日开始到当前时刻所经历的秒数。在这个例子中,0x2516b84b就是协调世界时间。在他后面有28字节的随机数( random_C ),在后面的过程中我们会用到这个随机数。 (2)SID(Session ID) 如果出于某种原因,对话中断,就需要重新握手。为了避免重新握手而造成的访问效率低下,这时候引入了session ID的概念, session ID的思想很简单,就是每一次对话都有一个编号(session ID)。如果对话中断,下次重连的时候,只要客户端给出这个编号,且服务器有这个编号的记录,双方就可以重新使用已有的"对话密钥",而不必重新生成一把。 因为我们抓包的时候,是几个小时内第一次访问 https://www.baodu.com 首页,因此,这里并没有 Session ID. (稍会儿我们会看到隔了半分钟,第二次抓包就有这个Session ID) session ID是目前所有浏览器都支持的方法,但是它的缺点在于session ID往往只保留在一台服务器上。所以,如果客户端的请求发到另一台服务器,就无法恢复对话。session ticket就是为了解决这个问题而诞生的,目前只有Firefox和Chrome浏览器支持。 (3) 密文族(Cipher Suites): RFC2246中建议了很多中组合,一般写法是"密钥交换算法-对称加密算法-哈希算法,以“TLS_RSA_WITH_AES_256_CBC_SHA”为例: (a) TLS为协议,RSA为密钥交换的算法; (b) AES_256_CBC是对称加密算法(其中256是密钥长度,CBC是分组方式); (c) SHA是哈希的算法。 浏览器支持的加密算法一般会比较多,而服务端会根据自身的业务情况选择比较适合的加密组合发给客户端。(比如综合安全性以及速度、性能等因素) (4) Server_name扩展:( 一般浏览器也支持 SNI(Server Name Indication)) 当我们去访问一个站点时,一定是先通过DNS解析出站点对应的ip地址,通过ip地址来访问站点,由于很多时候一个ip地址是给很多的站点公用,因此如果没有server_name这个字段,server是无法给与客户端相应的数字证书的,Server_name扩展则允许服务器对浏览器的请求授予相对应的证书。 还有一个很好的功能: SNI(Server Name Indication)。这个的功能比较好,为了解决一个服务器使用多个域名和证书的SSL/TLS扩展。一句话简述它的工作原理就是,在连接到服务器建立SSL连接之前先发送要访问站点的域名(Hostname),这样服务器根据这个域名返回一个合适的CA证书。目前,大多数操作系统和浏览器都已经很好地支持SNI扩展,OpenSSL 0.9.8已经内置这一功能,据说新版的nginx也支持SNI。) 4、 服务器回复(包括 Server Hello, Certificate, Certificate Status) 服务器在收到client hello后,会回复三个数据包,下面分别看一下: 1)Server Hello 1、我们得到了服务器的以Unix时间格式记录的UTC和28字节的随机数 (random_S)。 2、Seesion ID,服务端对于session ID一般会有三种选择 (稍会儿我们会看到隔了半分钟,第二次抓包就有这个Session ID) : 1)恢复的session ID:我们之前在client hello里面已经提到,如果client hello里面的session ID在服务端有缓存,服务端会尝试恢复这个session; 2)新的session ID:这里又分两种情况,第一种是client hello里面的session ID是空值,此时服务端会给客户端一个新的session ID,第二种是client hello里面的session ID此服务器并没有找到对应的缓存,此时也会回一个新的session ID给客户端; 3)NULL:服务端不希望此session被恢复,因此session ID为空。 3、我们记得在client hello里面,客户端给出了21种加密族,而在我们所提供的21个加密族中,服务端挑选了“TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256”。 (a) TLS为协议,RSA为密钥交换的算法; (b) AES_256_CBC是对称加密算法(其中256是密钥长度,CBC是分组方式); (c) SHA是哈希的算法。 这就意味着服务端会使用ECDHE-RSA算法进行密钥交换,通过AES_128_GCM对称加密算法来加密数据,利用SHA256哈希算法来确保数据完整性。这是百度综合了安全、性能、访问速度等多方面后选取的加密组合。 2)Certificate 在前面的https原理研究中,我们知道为了安全的将公钥发给客户端,服务端会把公钥放入数字证书中并发给客户端(数字证书可以自签发,但是一般为了保证安全会有一个专门的CA机构签发),所以这个报文就是数字证书,4097 bytes就是证书的长度。 我们打开这个证书,可以看到证书的具体信息,这个具体信息通过抓包报文的方式不是太直观,可以在浏览器上直接看。 (点击 chrome 浏览器 左上方的 绿色 锁型按钮) 3)Server Hello Done 我们抓的包是将 Server Hello Done 和 server key exchage 合并的包: 4)客户端验证证书真伪性 客户端验证证书的合法性,如果验证通过才会进行后续通信,否则根据错误情况不同做出提示和操作,合法性验证包括如下: 证书链的可信性trusted certificate path,方法如前文所述; 证书是否吊销revocation,有两类方式离线CRL与在线OCSP,不同的客户端行为会不同; 有效期expiry date,证书是否在有效时间范围; 域名domain,核查证书域名是否与当前的访问域名匹配,匹配规则后续分析; 5)秘钥交换 这个过程非常复杂,大概总结一下: (1)首先,其利用非对称加密实现身份认证和密钥协商,利用非对称加密,协商好加解密数据的 对称秘钥(外加CA认证,防止中间人窃取 对称秘钥) (2)然后,对称加密算法采用协商的密钥对数据加密,客户端和服务器利用 对称秘钥 进行通信; (3)最后,基于散列函数验证信息的完整性,确保通信数据不会被中间人恶意篡改。 此时客户端已经获取全部的计算协商密钥需要的信息:两个明文随机数random_C和random_S与自己计算产生的Pre-master(由客户端和服务器的 pubkey生成的一串随机数),计算得到协商对称密钥; enc_key=Fuc(random_C, random_S, Pre-Master) 6)生成 session ticket 如果出于某种原因,对话中断,就需要重新握手。为了避免重新握手而造成的访问效率低下,这时候引入了session ID的概念, session ID的思想很简单,就是每一次对话都有一个编号(session ID)。如果对话中断,下次重连的时候,只要客户端给出这个编号,且服务器有这个编号的记录,双方就可以重新使用已有的"对话密钥",而不必重新生成一把。 因为我们抓包的时候,是几个小时内第一次访问 https://www.baodu.com 首页,因此,这里并没有 Session ID. (稍会儿我们会看到隔了半分钟,第二次抓包就有这个Session ID) session ID是目前所有浏览器都支持的方法,但是它的缺点在于session ID往往只保留在一台服务器上。所以,如果客户端的请求发到另一台服务器,就无法恢复对话。session ticket就是为了解决这个问题而诞生的,目前只有Firefox和Chrome浏览器支持。 后续建立新的https会话,就可以利用 session ID 或者 session Tickets , 对称秘钥可以再次使用,从而免去了 https 公私钥交换、CA认证等等过程,极大地缩短 https 会话连接时间。 7) 利用对称秘钥传输数据 【半分钟后,再次访问百度】: 有这些大的不同: 由于服务器和浏览器缓存了 Session ID 和 Session Tickets,不需要再进行 公钥证书传递,CA认证,生成 对称秘钥等过程,直接利用半分钟前的 对称秘钥 加解密数据进行会话。 1)Client Hello 2)Server Hello
玄学酱 2019-12-02 01:27:08 0 浏览量 回答数 0

回答

=== 2018/8/30 16:00 终于搞定php对公钥证书签名 根据java SDK源码,用php取公钥证书SN如下: $p = []; $str = file_get_contents('./alipayRootCert.crt'); $p["alipay_root_cert_sn"] = getRootCertSN($str); $str = file_get_contents('./alipayCertPublicKey_RSA2.crt'); $p["alipay_cert_sn"] = getCertSN($str); $str = file_get_contents('./appCertPublicKey.crt'); $p["app_cert_sn"] = getCertSN($str); var_export($p); function getRootCertSN($str) { $arr = preg_split('/(?=-----BEGIN)/', $str, -1, PREG_SPLIT_NO_EMPTY); $str = null; foreach ($arr as $e) { $sn = getCertSN($e, true); if (!$sn) continue; if ($str === null) $str = $sn; else $str .= "_" . $sn; } return $str; } function getCertSN($str, $matchAlgo=false) { /* 根据java SDK源码:AntCertificationUtil::getRootCertSN 对证书链中RSA的项目进行过滤(猜测是gm国密算法java抛错搞不定,故意略去) java源码为: if(c.getSigAlgOID().startsWith("1.2.840.113549.1.1")) 根据 https://www.alvestrand.no/objectid/1.2.840.113549.1.1.html 该OID为RSA算法系。 */ if ($matchAlgo) { openssl_x509_export($str, $out, false); if (!preg_match('/Signature Algorithm:.*?RSA/im', $out, $m)) return; } $a = openssl_x509_parse($str); $issuer = null; // 注意:根据java代码输出,需要倒着排列 CN,OU,O foreach ($a["issuer"] as $k=>$v) { if ($issuer === null) { $issuer = "$k=$v"; } else { $issuer = "$k=$v," . $issuer; } } # echo($issuer . $a["serialNumber"] . "\n"); $sn = md5($issuer . $a["serialNumber"]); return $sn; } 做为首批踩坑者,只能长叹一声 === 2018/8/30 12:15 更新: 名字和序列化取出来像这样: CN=Ant Financial Certification Authority Class 2 R1,OU=Certification Authority,O=Ant Financial,C=CN 42665268812499181166312682537244063920 名字各段之间用逗号分隔,没有额外的空格序列号是10进制数,不是16进制,也没有任何分隔符取根证书sn需要遍历其中所有证书链,分别对name+serial进行md5编码,再用"_"连接起来。 看了半天java源码,终于运行起来,把sn值打出来了,拷贝到php中,终于看到手机上支付页面出来了。结果大致像这样: "app_cert_sn" => "06de145e15a73a8ce87f3eefeddce8b2", //"alipay_cert_sn" => "b1a855128d973b1ff1b1609bbce77fe0", "alipay_root_cert_sn" => "687b59193f3f462dd5336e5abf83c5d8_02941eef3187dddf3d3b83462e1dfcf6" 支付宝根证书要用特殊方法来取(源码里用AntCertificationUtil.getRootCertSN),怪不得之前写的不行。 定此接口的人需要深刻检讨,竟然直接以java语言的某个输出来定接口规范。难怪php或其它语言的相关sdk没有出来,我感觉也不好写。 ============ 旧消息 新申请的开放平台帐号,被强制使用了公钥证书签名。 !!!下面开始吐槽: 首先是接口文档比如 https://docs.open.alipay.com/api_1/alipay.trade.app.pay 中完全没提到有公钥证书签名这回事。 调用支付出问题后(报错总是报“支付取消”??),四处查文档,才找到php SDK没有提供此功能,于是决定按接口文档来写。 签名算法的文档中介绍是这样介绍算法的: “SN值是通过解析X.509证书文件中签发机构名称(name)以及内置序列号(serialNumber),将二者拼接后的字符串计算MD5值获取” 尼码,文档完全没有介绍name和serialNumber分别是怎样的文本格式?也没有例子。 我试了name是 “ROOTCA”,“/C=CN/O=NRCAC/CN=ROOTCA”,“C=CN, O=NRCAC, CN=ROOTCA”各种格式,而serialNumber格式我试了 “69e2fec0170ac67b”以及加"69 e2..."、加“69:e2..."等,以及各种组合,都没有验签成功。 于是走第二条路,找它说的java SDK源码来参考。打开java sdk链接,是在maven上的,找了好久才搜到了新版本java源码。 终于找到了介绍的getCertSN函数,其核心是这样实现的: public static String getCertSN(String certPath)throws AlipayApiException{ InputStream inputStream = null; inputStream = new FileInputStream(certPath); CertificateFactory cf = CertificateFactory.getInstance("X.509"); X509Certificate cert = (X509Certificate)cf.generateCertificate(inputStream); MessageDigest md = MessageDigest.getInstance("MD5"); md.update((cert.getIssuerX500Principal().getName()+cert.getSerialNumber()).getBytes()); String certSN = new BigInteger(1,md.digest()).toString(16); //BigInteger会把0省略掉,需补全至32位 certSN = fillMD5(certSN); return certSN; 于是找这cert.getIssuerX500Principal().getName()+cert.getSerialNumber()文档 实在看不懂,算了,还是直接运行这段java代码吧,把结果复制到php中填参数也可以,眼看就要成功了,结果运行java是这样的: java.security.cert.CertificateParsingException: java.io.IOException: Unknown named curve: 1.2.156.10197.1.301 at sun.security.x509.X509CertInfo.<init>(Unknown Source) at sun.security.x509.X509CertImpl.parse(Unknown Source) at sun.security.x509.X509CertImpl.<init>(Unknown Source) at sun.security.provider.X509Factory.engineGenerateCertificate(Unknown Source) at java.security.cert.CertificateFactory.generateCertificate(Unknown Source) at j1.getCertSN(j1.java:33) at j1.main(j1.java:24) 搜索发现,是java不支持国密算法。。。(https://cloud.tencent.com/info/fcfae2f8bd49fcce8737c7485afcdf29.html)
天笑2001 2019-12-02 02:09:44 0 浏览量 回答数 0

问题

Serverless Kubernetes 集群&nbsp;&nbsp;负载均衡管理&nbsp;&nbsp;通过Ingress提供7层服务访问

在阿里云Serverless Kubernetes集群中,我们可以通过LoadBalancer Service对外提供四层服务访问,同样您也可以通过Ingress来对外提供七层服务访问,下面介绍如何...
青蛙跳 2019-12-01 21:37:20 446 浏览量 回答数 0

回答

Linux下如何进行FTP设置  ECSLinux服务器如何配置网站以及绑定域名  Ubuntu安装vncserver实现图形化访问  阿里云Docker镜像库  ECSlinux中添加ftp用户,并设置相应的权限  CentOS6.5安装vncserver实现图形化访问  LinuxSCP命令复制传输文件的用法  Mysql,phpmyadmin密码忘了怎么  Linux下l2tp客户端xl2tpd的安装配置  使用SFTP方式传输文件  ECSLinux系统盘网站数据更换至数据盘  WDCP的报错处理  Linux中PHP如何安装curl扩展方法  修改Linux服务器的ssh端口  ECSLinux配置vnc文档  运维分享--阿里云linux系统mysql密码修改脚本  20步打造最安全的NginxWeb服务器  SSH配置存在问题,导致登录和传输数据很慢  ECSLinux下如何查看定位当前正在运行的Nginx的配置文件  ECS服务器CentOS系统如何开放端口  查看Linux下默认的DNS  FTP主动被动模式配置混乱导致无法登录  linux环境配置phpmyadmin  ECSLinux系统下VSFTP配置的FTP上传文件报错“553Couldnotcreatefile”  ECSLinuxMysql启动提示Toomanyarguments(firstextrais'start')  运维分享--阿里云linux系统ssh远程连接检查脚本  ECSLinux系统授权mysql外网访问  ECSLinux服务器nginx禁止空主机头配置  ECSLinux服务器通过FTP无法查看到.htaccess文件  ECSLinux服务器下Mysql自动备份脚本的使用方法  ECS-linux授权mysql外网访问  用date命令修改Linux系统的时间为什么无效  运维分享--阿里云linux系统web日志分析脚本  ECSLinux服务器messagebus默认关闭导致安装桌面环境后无法正常使用  ECSNginx+php中php-fpm参数配置  运维分享--阿里云linux系统mysql连接检查脚本  iptables的conntrack表满了导致访问网站很慢  运维分享--阿里云linux系统带宽监测脚本  如何调整目录文件的拥有者和拥有组  yum操作报错处理  ECSLinux配置vsftpd限制FTP账户访问其它目录  vsftp报错:500OOPS:vsftpd:cannotlocateuserspecifiedin'ftp_username':ftp  Linux主机系统目录误操作权限修改为777修复方法  ECSNginx中https的配置说明  运维分享--阿里云linux系统负载状态检查脚本  ECSLinux服务器AMH云主机面板启动、关闭操作  ECSLinux服务器关闭磁盘自检  ECSLinux配置key认证登录后因为相关文件权限错误导致连接失败-Connectionclosedbyforeignhost  ECSLinux系统服务器解决ssh反向代理监听ip错误问题  ECSLinux设置定时任务crontab  ECSGentoo系统中mirrorselect获取内容失败提示Nameorservicenotknown  ECSLinux系统服务器ping域名返回Unknownhost报错  IIS、Nginx或Apache访问日志存在182.92.12.0/24段访问记录  Nginx日志的解释  ECSLinux系统wget下载文件  ECSLinux服务器内部无法解析域名  ECS路由表错误导致无法ping通  ECSLinux主机修改主机名  wordpress插件oss4wpurl无法访问  ECSLinux查看隐藏文件  Linux系统服务器解决vsftp服务使用root登录失败  ECSLinuxPPTP客户端登陆后获取地址错误  Linux系统服务器解决内外双网卡均显示内网IP地址问题  ECSLinux系统NetworkManager导致网络异常  外部PingECSLinux丢包严重  ECSLinux检查Nginx配置文件  ECSLinux系统判断当前运行的Apache所使用的配置文件  Apache访问日志的说明  ECSLinux.htacess文件上传无法显示  linux服务器内无法访问其他站点的检查处理方法  ECSmysql无法启动报错Can'tcreate/writetofile'/tmp/ibfguTtC  ECSLiunx系统服务器执行ls查询命令提示bash:ls:commandnotfound  Linux为何执行命令会执行历史命令  ECSLinux系统如何检查系统上一次重启的时间  ECSLinux下MySQL排查基本步骤  Linux系统如何查看mysql版本号  MySQL中查看慢SQL的日志文件方法  phpMyAdmin修改配置可以上传大文件  openSUSE下开机自动运行脚本命令的方法  给Linux系统添加一个回收站  ECSLinux分区异常无法挂载  ECSLinux上安装Cloudfs启动失败提示找不到库文件libunwind.so.8  ECSLinux清理/tmp目录下的文件原理  Liunx系统服务器通过prefork模块限制apache进程数量  ECSCentOS6.5系统下Apache配置https服务  Noinputfilespecified的解决方法  Apache、Nginx支持跨域访问  Apache环境下配置404错误页方法  ECSLinux通过修改Apache配置301重定向的方法  ECSLinux主机无法互访处理  ECSlinux服务器启用了TRACEMethod.怎么关闭  Apache运行参考的调整优化  ECSApache如何关闭目录访问  ECS服务器隐藏apache版本信息  ECSLinux判断HTTP端口监听状态的方法  ECSLinuxApache限制客户端访问网站的速度  负载均衡+ECS站点虚拟子目录的设置案例  ECS网站访问504错误分析  为何Ubuntu开启UFW后,VPC下的SNAT转发就失效了  ECSDebian自定义镜像启动无法SSH  ECSLinux云服务器如何确认文件系统只读?  ECSLinux创建文件报错Read-onlyfilesystem  恢复ext4文件系统中使用rm命令误删除的文件  ECSLinux删除乱码文件的方法  net.ipv4.tcp_fin_timeout修改导致的TCP链接异常排查  ECSLinux执行sh脚本提示Nosuchfileordirectory  /var/log/message日志报错  通过sshtunnel连接内网ECS和RDS  CentOS7中MySQL服务启动失败的解决思路  ECSLinux系统启动提示“Giverootpasswordformaintenance”  结束云盾客户端进程后如何启用  Ubuntu服务器中配置AWStats  CentOS6非root用户使用sftp服务  ssh避免客户端长久未操作导致连接中断  删除binglog导致mysql无法启动  ECSLinux服务器修改SSH端口号不生效的检查方法  ftp传输失败问题解决方法  ECSLinux下使用extundelete恢复被误删的文件  ECSLinux基于nginx环境通过.htaccess配置rewrite伪静态示例  ECSLinux系统利用openssl生成强密码  ECSCentOS6配置PPTPVPN  Last命令关于reboot记录的含义  Ubuntu修改运行级别的总结  ECSCentOS6系统PPTPVPN脚本  ECSLinux系统如何配置gentoo的源  ECSCentOS系统配置VPN客户端  多域名跳转——不同域名指向不同子目录  Centos配置PPTPVPN后无法打开网页  mysql不能远程连接  ECSLinux系统修改文件或目录权限方法  ECSWDCP破解mysql以及wdcp后台管理密码  ECSLinux系统如何设置SSH白名单  EcsLinux系统一键安装web环境下tomcat添加站点方法  Centos7安装vnc  Setuptools软件包版本太老导致ECSLinux安装AliyunCLI出错  Apache配置二级域名  ECSlinux重启丢失分区表  Linux系统服务器安装使用sar工具获取系统运行状态方式  ECSUbuntu开启sftp连接  linux系统mysql跳过密码登陆操作登陆设置  mysql报错LostconnectiontoMySQLserverat'readinginitialcommunicationpacket'  Ubuntuapt-get安装提errorprocessingpackageinstall-info(--configure)  Nodejs的版本升级和使用  Nodejs连接RDSMySQL数据库  ECS公共镜像Ubuntu,Centos的内核版本查看方法  ECSLinux服务器修改时区  Apache禁止未经许可的域名访问ECS上的网站  ECSLinux如何隐藏文件和文件夹  ECSmysql.sock丢失问题解决方法  ECSLinux云服务器centos将系统时区从UTC时间改为CST  ECSLinux云服务器权限问题说明  ECSLinux系统盘数据转移方法  Linux下忘记mysql的root密码  ECSMySQL编译安装支持innodb引擎  ECSLinuxNAT哈希表满导致服务器丢包  ECSLinux服务器重启后mount出错的解决方法  Centos6.5添加IPv6支持  ECSubuntu系统修改DNS/etc/resolv.conf无法保存  ECSLinux如何增加虚拟内存swap  ECSLinuxtraceroute使用方法  ECSLinux系统磁盘再次挂载报错没有有效的分区表  如何删除yum的缓存信息  ECSLinux服务器yum的查询功能  centos6怎么使用RPMForge软件源仓库  ECSLinux服务器Nginxrewrite示例  ECSLinuxCentOS6ssh连上就断掉并报错“fatal:mm_request_send:write:Brokenpipe”  mysql上传报错#1064-YouhaveanerrorinyourSQLsyntax  EcsLinux中rpm安装文件命令常用选项  ECSLinux系统kjournald进程占用io资源高的解决方法  ECSLinux如果通过i节点删除无法删除的文件  ECSLinux基于zabbix搭建企业级监控平台  ECSLinux系统yum卸载重装  ECSCentOS6.5OpenVPN配置  ECSLinux使用SFTP登陆时报错:Receivedunexpectedend-of-filefromSFTPserver  ECSLinux如何增加数据盘iNode数量  ECSLinux查看目录没有颜色  ECSLinux系统tmp目录的安全设置  ECSLinux下shm设备的安全设定  ECSCentOS多线程下载工具Axel使用说明  ECSLinuxcurl使用证书访问HTTPS站点  Linux系统中vsftp用户无法登陆的相关说明  Nginx配置文件中rewrite指令标志位的说明与使用  ECSLinux中ss命令显示连接状态的使用说明  ECSLinux系统没有程序运行通过top观察发现cpu很空闲  Linux下的文件权限检查和修改  ECSLinux云服务器利用chatter命令锁定系统重要文件  ECSCentos7安装OpenVPN  ECS上搭建反向代理通过内网访问OSS服务  ECSLinux下的script命令记录用户操作行为  Ubuntu下使用slay命令结束某个用户的所有进程  Nginx配置文件中root与alias指令的区别  Nginx配置文件中rewrite指令的使用  ECSLinux如何修改PATH变量  Centos安装桌面后在远程终端管理里面无法使用键盘和鼠标  ECSLinux下Apache忽略网站URL的大小写的方法  ECSLinux服务器利用Nethogs监控每个进程的网络使用情况  ECSapt-get安装软件或更新时提示apt-get的Segmentationfaultsts  ubuntu开机出现memtest86,重启也无法取消的原因  Linux下History命令显示操作时间,用户和登录IP  ECSLinux服务器使用htop监控负载 “答案来源于网络,供您参考” 希望以上信息可以帮到您!
牧明 2019-12-02 02:16:20 0 浏览量 回答数 0

回答

Re【原创】配置阿里云服务器CentosRedHat64位服务器 格式化后我们把它挂载到到/web/目录 让它用来专门存放网站相关数据 mount /dev/xvdb1 /web/ 挂载后编辑/etc/fstab使分区在开机时自动挂载到/web/ echo "/dev/xvdb1 /web/ ext3 defaults 0 0" >> /etc/fstab 这里顺便附上卸载分区命令,供挂错的孩纸备用。 umount   挂载点设备如: umount /mnt 现在该正式安装程序了 -------↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓--------Centos系统的童鞋这里可以直接无视---------↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓------------ 因为Redhat yum在线更新是收费的,我们现在把它改下 下面这些是直接在网上转来的,已经过我测试,放心使用 更新Yum源为163的yum源: 1.导入CentOS-5的GPG证书 rpm --import http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-5 2.让yum使用网易的源: cd /etc/yum.repos.d/ wget http://mirrors.163.com/.help/CentOS-Base-163.repo 3.修改repo文件 在所有mirrorlist前面加上#,把所有$releasever替换成5 sed -i '/mirrorlist/d' CentOS-Base-163.repo sed -i 's/\$releasever/5/' CentOS-Base-163.repo 4.清理并重新生成yum缓存 yum clean metadata yum makecache ------↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑---------Centos系统的童鞋这里可以直接无视------------↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑--------- ------------------------- Re【原创】配置阿里云服务器CentosRedHat64位服务器 在安装程序前,我们先把基础环境包安装下,否则安装以下程序的时候会出现很多问题 -------↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓--------RedHat系统的童鞋这里可以直接无视---------↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓------------ 如果是Centos系统的话,我们还要先改个文件,作用是为了让服务器可以安装或更新kernel开头的软件,因为我们的环境要用到 vim /etc/yum.conf 按I开始编辑(记住噢,教程往下就省略了) 找到 exclude=kernel* 在前面加上#号 修改好后按ESC键  输入以下命令保存(记住噢,教程往下就省略了) :wq ------↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑---------RedHat系统的童鞋这里可以直接无视------------↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑--------- ------------------------- Re【原创】配置阿里云服务器CentosRedHat64位服务器 开始安装基础环境包 sudo -sLANG=Cyum -y install gcc gcc-c   autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers lsof unzip 等了好久吧 现在准备开始安装程序了,都要安装些什么呢?我把要安装的列出来了,有不需要的大家可以不安装。 libiconv 作用转换编码 libmcrypt 作用加密 mhash 同上 mcrypt  同上 cmake 安装Mysql时需要 bison 同上 libunwind 使用tcmalloc 加速 mysql 和 nginx需要 google-perftools 使用tcmalloc 加速 mysql 和 nginx需要 mysql 不解释 pcre 安装nginx需要 nginx 不解释 php 不解释 memcache 缓存加速 memcached 同上 eaccelerator 同上 libevent 安装 memcached 需要 PDO_MYSQL php可以用pdo操作数据库 不知道安装什么版本?下载包找不到?找不到就不用找到,我已经都帮你们找好了,全是最新的安装包。 往下拉↓↓↓ 找这些安装包可花了我不少时间,版主大人 给加个精安慰下吧 libiconv 1.14 http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz libmcrypt 2.5.8 http://sourceforge.net/projects/ ... 5.8.tar.gz/download mhash 0.9.9.9 http://downloads.sourceforge.net ... 740843&big_mirror=0 mcrypt 2.6.8 http://sourceforge.net/projects/ ... wnload?source=files cmake 2.8.10.1 http://www.cmake.org/files/v2.8/cmake-2.8.10.1.tar.gz bison 2.5 http://ftp.gnu.org/gnu/bison/bison-2.5.tar.gz libunwind 1.1 http://download.savannah.gnu.org/releases/libunwind/libunwind-1.1.tar.gz google-perftools 2.0 http://gperftools.googlecode.com/files/gperftools-2.0.tar.gz mysql 5.5.28 http://cdn.mysql.com/Downloads/MySQL-5.5/mysql-5.5.28.tar.gz pcre 8.31 ftp://ftp.csx.cam.ac.uk/pub/soft ... re/pcre-8.31.tar.gz Nginx 最新稳定版:1.3.8 http://nginx.org/download/nginx-1.3.8.tar.gz php 最新稳定版  5.4.8 http://cn2.php.net/get/php-5.4.8.tar.gz/from/tw1.php.net/mirror memcached 最新稳定版2.2.7 http://pecl.php.net/get/memcache memcached 1.4.15 http://memcached.googlecode.com/files/memcached-1.4.15.tar.gz libevent 2.0.20 https://github.com/downloads/lib ... .0.20-stable.tar.gz eaccelerator 42067 https://github.com/eaccelerator/eaccelerator/tarball/master PDO_MYSQL 1.0.2 http://pecl.php.net/get/PDO_MYSQL ------------------------- Re【原创】配置阿里云服务器CentosRedHat64位服务器 开个楼单独说下 大家执行命令的时候最好 一行一行去复制执行 不要一次全复制去执行,有可能会出错 ------------------------- Re【原创】配置阿里云服务器CentosRedHat64位服务器 安装包都下载好了吧?那我们开始安装吧 把所有下载的压缩包 传到/web/backup/soft 目录 关于上传可以用Filezilla 这个软件 新建一个站点  协议选择sftp 账号和密码 输入putty 登陆账号密码就可以了 安装 libiconv cd /web/backup/softtar zxvf libiconv-1.14.tar.gzcd libiconv-1.14./configure --prefix=/usr/localmakemake installcd ../ ------------------------- Re【原创】配置阿里云服务器CentosRedHat64位服务器 安装 libmcrypt cd /web/backup/softtar zxvf libmcrypt-2.5.8.tar.gzcd libmcrypt-2.5.8/./configuremakemake install/sbin/ldconfigcd libltdl/./configure --enable-ltdl-installmakemake installcd ../../ ------------------------- Re【原创】配置阿里云服务器CentosRedHat64位服务器 安装 mhash cd /web/backup/softtar zxvf mhash-0.9.9.9.tar.gzcd mhash-0.9.9.9/./configuremakemake installcd ../ 设置共享资源 ln -s /usr/local/lib/libmcrypt.la /usr/lib/libmcrypt.laln -s /usr/local/lib/libmcrypt.so /usr/lib/libmcrypt.soln -s /usr/local/lib/libmcrypt.so.4 /usr/lib/libmcrypt.so.4ln -s /usr/local/lib/libmcrypt.so.4.4.8 /usr/lib/libmcrypt.so.4.4.8ln -s /usr/local/lib/libmhash.a /usr/lib/libmhash.aln -s /usr/local/lib/libmhash.la /usr/lib/libmhash.laln -s /usr/local/lib/libmhash.so /usr/lib/libmhash.soln -s /usr/local/lib/libmhash.so.2 /usr/lib/libmhash.so.2ln -s /usr/local/lib/libmhash.so.2.0.1 /usr/lib/libmhash.so.2.0.1ln -s /usr/local/bin/libmcrypt-config /usr/bin/libmcrypt-config ------------------------- Re【原创】配置阿里云服务器CentosRedHat64位服务器 安装 mcrypt cd /web/backup/softtar zxvf mcrypt-2.6.8.tar.gzcd mcrypt-2.6.8//sbin/ldconfig./configuremakemake installcd ../ ------------------------- Re【原创】配置阿里云服务器CentosRedHat64位服务器 安装 cmake cd /web/backup/softtar zvxf cmake-2.8.10.1.tar.gzcd cmake-2.8.10.1 ./bootstrapmake && make installcd ../ 注:如果安装不成功或图省事可以使用yum -y install cmake来快速安装 ,安装这个需要些时间的。 ------------------------- Re【原创】配置阿里云服务器CentosRedHat64位服务器 安装 libunwind cd /web/backup/softtar zvxf libunwind-1.1.tar.gzcd libunwind-1.1./configure --enable-sharedmake && make installcd ../ ------------------------- Re【原创】配置阿里云服务器CentosRedHat64位服务器 安装 google-perftools cd /web/backup/softtar zvxf gperftools-2.0.tar.gzcd gperftools-2.0./configure --enable-shared --enable-frame-pointersmake && make installcd ../ 更新,使动态链接库能够被系统共享 echo "/usr/local/lib" > /etc/ld.so.conf.d/usr_local_lib.conf/sbin/ldconfig ------------------------- Re【原创】配置阿里云服务器CentosRedHat64位服务器 重点来了 现在开始准备安装Mysql 创建mysql用户组和用户 /usr/sbin/groupadd mysql/usr/sbin/useradd -g mysql mysql 创建mysql数据库所需要的目录 mkdir -p /web/data/mysqlchown -R mysql:mysql /web/data/mysql 安装 Mysql su - rootcd /web/backup/softtar zvxf mysql-5.5.28.tar.gzcd mysql-5.5.28cmake -DCMAKE_INSTALL_PREFIX=/web/soft/mysql -DMYSQL_DATADIR=/web/data/mysql -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_MYISAM_STORAGE_ENGINE=1 -DSYSCONFDIR=/etc/ -DWITH_SSL=yes -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_READLINE=onmake && make install 建立软链接 ln -s /web/soft/mysql/lib/lib* /usr/lib/ 配置Mysql数据库 cd /web/soft/mysql./scripts/mysql_install_db --basedir=/web/soft/mysql/ --datadir=/web/data/mysql/ --user=mysql 复制配置文件 cp ./support-files/my-large.cnf /etc/my.cnf 如提示是否复制 输入y回车 设置mysql开机自动启动服务 cp ./support-files/mysql.server /etc/rc.d/init.d/mysqldchkconfig --add mysqldchkconfig --level 345 mysqld on ------↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓会在文件中搜索内容的童鞋可以无视↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓----- 因为教程后面要修改的文件内容挺多,先中断一会,说下打开文件后如果搜索内容 如上面这个操作 vim /etc/rc.d/init.d/mysqld 打开文件后 先不要按I编辑 输入 /basedir 然后回车 这里的意思是 搜索 basedir 如果找到的内容不是 再按N查下一个 如果找到了自己要改的内容再按I编辑就可以了 /查找内容 反斜杠 查找内容 是搜索的意思,童鞋记住了没 再罗嗦一下,在putty粘贴复制好的内容,直接在相应位置鼠标右键就可以了 -------↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑会在文件中搜索内容的童鞋可以无视↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑------ 修改服务配置文件 vim /etc/rc.d/init.d/mysqld 找到相应代码修改为(不会修改文件?看3楼加红字。不会查找内容?网 ↑↑↑↑↑↑↑看) basedir=/web/soft/mysqldatadir=/web/data/mysql 数据初始化,及修改root密码 service mysqld startcd /web/soft/mysql/./bin/mysql_secure_installation 运行上面命令后,会先提示你输入mysql密码,因为默认是空直接回车 提示是否设置新密码(set root password),输入y,根据提示输入两边新密码后回车 提示是否删除匿名用户(remove anonymous users),输入y 提示是否禁止远程登录(disallow root login remotely),输入y 提示删除测试数据库(remove test database and access to it),输入y 提示现在重新载入权限表(reload privilege tables now),输入y 软连接mysql ln -s /web/soft/mysql/bin/mysql /bin 设置软连接后 直接在命令行 mysql -u root -p  就可以进入mysql了 使用tcmalloc优化mysql 修改MySQL启动脚本(根据你的MySQL安装位置而定) vim /web/soft/mysql/bin/mysqld_safe 在# executing mysqld_safe的下一行,加上: export LD_PRELOAD=/usr/local/lib/libtcmalloc.so 重启服务,查看tcmalloc是否生效 (第二条命令显示即生效) service mysqld restartlsof -n | grep tcmalloc ------------------------- Re【原创】配置阿里云服务器CentosRedHat64位服务器 安装 pcre cd /web/backup/softtar zxvf pcre-8.31.tar.gzcd pcre-8.31/./configuremake && make installcd ../ 设置共享资源( 这里要注意:因为我是64位系统所以位置为cd /lib64 如果是32位系统请把cd /lib64改为 cd /lib) cd /lib64/ln -s libpcre.so.0.0.1 libpcre.so.1 ------------------------- Re【原创】配置阿里云服务器CentosRedHat64位服务器 第二个重点来了 安装 Nginx 创建www用户和组,创建www虚拟主机使用的目录,并且赋予他们适当的权限 groupadd wwwuseradd -g www wwwmkdir -p /web/wwwchmod  w /web/wwwchown -R www:www /web/www 为tcmalloc添加目录,并且赋予适当权限 mkdir -p /tmp/tcmalloc/chown -R www:www /tmp/tcmalloc/ cd /web/backup/softtar zvxf nginx-1.3.8.tar.gzcd nginx-1.3.8 ------------伪装开始------------------ 以下操作是伪装服务器信息的,大家可以不修改(伪装的作用是让其他人看不出你网站用的是nginx) vim ./src/core/nginx.h 复制代码 修改NGINX_VERSION为你希望显示的版号 【这里我改为了1.4.31】 修改NGINX_VER为你希望显示的名称 【这里我改为了lighttpd】 修改NGINX_VAR 为你希望显示的名称 【这里我改为了lighttpd】 ------------伪装结束------------------ 继续安装Nginx ./configure --user=www --group=www --prefix=/web/soft/nginx --with-http_stub_status_module --with-http_ssl_module --with-google_perftools_modulemake && make installcd ../ 修改 nginx.conf ,令nginx可以 google-perftools加速 vim /web/soft/nginx/conf/nginx.conf 修改前面几行为:(也就是http{以上的代码) user www www;worker_processes 4;error_log logs/error.log crit;pid logs/nginx.pid;google_perftools_profiles /tmp/tcmalloc/;events {  use epoll;  worker_connections 65535;} 测试运行Nginx cd /web/soft/nginx./sbin/nginx -t 如果显示下面信息,即表示配置没问题 nginx: the configuration file /web/soft/nginx/conf/nginx.conf syntax is ok nginx: configuration file /web/soft/nginx/conf/nginx.conf test is successful 输入代码运行nginx服务 ./sbin/nginxps au|grep nginx 如果显以类似下面的信息,即表示nginx已经启动 root     27056  0.0  0.1 103232   852 pts/0    S    09:57   0:00 grep nginx 输入代码检测是否支持加速 lsof -n | grep tcmalloc 如果显示类似下面的信息,即表示支持tcmalloc加速 (mysqld和nginx两个线程都支持) mysqld    20707 mysql  mem       REG              202,1  2212983     837411 /usr                                             /local/lib/libtcmalloc.so.4.1.0 nginx     27051   www    9w      REG              202,1        0   33951543 /tmp                                             /tcmalloc/.27051 nginx     27052   www   11w      REG              202,1        0   33951541 /tmp                                             /tcmalloc/.27052 nginx     27053   www   13w      REG              202,1        0   33951542 /tmp                                             /tcmalloc/.27053 nginx     27054   www   15w      REG              202,1        0   33951540 /tmp                                             /tcmalloc/.27054 编写nginx 启动服务 cd /etc/init.dvim nginx 输入以下代码并保存( 复制时要仔细,检查是否复制完成,打开文件后按I进入编辑状态再右键粘贴) #!/bin/sh # # nginx - this script starts and stops the nginx daemon # # chkconfig:   - 85 15 # description: Nginx is an HTTP(S) server, HTTP(S) reverse \ #               proxy and IMAP/POP3 proxy server # processname: nginx # config:      /etc/nginx/nginx.conf # config:      /etc/sysconfig/nginx # pidfile:     /var/run/nginx.pid # Source function library. . /etc/rc.d/init.d/functions # Source networking configuration. . /etc/sysconfig/network # Check that networking is up. [ "$NETWORKING" = "no" ] && exit 0 nginx="/web/soft/nginx/sbin/nginx"prog=$(basename $nginx)NGINX_CONF_FILE="/web/soft/nginx/conf/nginx.conf"[ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginxlockfile=/var/lock/subsys/nginx start() {    [ -x $nginx ] || exit 5    [ -f $NGINX_CONF_FILE ] || exit 6    echo -n $"Starting $prog: "    daemon $nginx -c $NGINX_CONF_FILE    retval=$?    echo    [ $retval -eq 0 ] && touch $lockfile    return $retval} stop() {     echo -n $"Stopping $prog: "    killproc $prog -QUIT    retval=$?    echo    [ $retval -eq 0 ] && rm -f $lockfile    return $retval    killall -9 nginx} restart() {    configtest || return $?    stop     sleep 1     start }reload() {    configtest || return $?    echo -n $"Reloading $prog: "    killproc $nginx -HUP    RETVAL=$?    echo} force_reload() {    restart}configtest() {    $nginx -t -c $NGINX_CONF_FILE}rh_status() {    status $prog}rh_status_q() {    rh_status >/dev/null 2>&1}case "$1" in    start)        rh_status_q && exit 0    $1        ;;    stop)        rh_status_q || exit 0        $1        ;;    restart|configtest)        $1        ;;    reload)        rh_status_q || exit 7        $1        ;;    force-reload)        force_reload        ;;    status)        rh_status        ;;    condrestart|try-restart)        rh_status_q || exit 0        ;;    *)        echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"         exit 2 esac 设置权限,并添加到启动服务列表中 chmod 755 /etc/init.d/nginxchkconfig --add nginxchkconfig --level 345 nginx on/web/soft/nginx/sbin/nginx -s stopservice nginx start ------------------------- Re【原创】配置阿里云服务器CentosRedHat64位服务器 第三个重点 安装 PHP (准备在服务器安装Dedecms的童鞋要注意了,这里的PHP版本比较高,有些旧函数被抛弃了,经我测试,安装最新版的Dedecms5.7时登录后台页面空白,如需安装Dedecms建议安装PHP 5.2.8版本, phpwind discuz 不受影响 ) 安装前先执行以下命令 32位系统执行 ln -s /web/soft/mysql/lib/libmysqlclient.so.18  /lib/ 64位系统执行 cp -frp /usr/lib64/libldap* /usr/lib/ln -s /web/soft/mysql/lib/libmysqlclient.so.18  /lib64/ 继续执行 mkdir ext/phar/phar.pharcd /web/backup/softtar zvxf php-5.4.8.tar.gzcd php-5.4.8./configure --prefix=/web/soft/php --with-config-file-path=/web/soft/php/etc --with-mysql=/web/soft/mysql --with-mysqli=/web/soft/mysql/bin/mysql_config --with-iconv-dir=/usr/local --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath --disable-safe-mode --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --with-curlwrappers --enable-mbregex --enable-fpm --enable-mbstring --with-mcrypt --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-ldap --with-ldap-sasl --with-xmlrpc --enable-zip --enable-soap --disable-fileinfomake ZEND_EXTRA_LIBS='-liconv'make install 复制配置文件 cp php.ini-production /web/soft/php/etc/php.inicd ../ 安装 memcache cd /web/backup/softtar zvxf memcache-2.2.7.tgzcd memcache-2.2.7/web/soft/php/bin/phpizeldconfig./configure --with-php-config=/web/soft/php/bin/php-configmake && make install 修改php配置文件,使其支持memcache vim /web/soft/php/etc/php.ini 在文件中搜索; extension_dir = "./" 在下面增加第一行代码,搜索;extension=php_shmop.dll在下面增加第二行代码 ( 照顾一下粗心的童鞋,再说一次搜索的方法是VIM进入文件后输入/然后输入要查找的内容回车) extension_dir = "/web/soft/php/lib/php/extensions/no-debug-non-zts-20100525/"extension = "memcache.so" 安装 eaccelerator扩展 cd /web/backup/softtar zvxf eaccelerator-eaccelerator-42067ac.tar.gzcd eaccelerator-eaccelerator-42067ac/web/soft/php/bin/phpize./configure --enable-eaccelerator=shared --with-php-config=/web/soft/php/bin/php-configmake && make install 修改php配置文件,使其支持eaccelerator vim /web/soft/php/etc/php.ini 在文件尾部增加以下代码( Shift G快速移动到文档尾部) [eaccelerator] zend_extension="/web/soft/php/lib/php/extensions/no-debug-non-zts-20100525/eaccelerator.so"eaccelerator.shm_size="32"eaccelerator.cache_dir="/tmp/eaccelerator"eaccelerator.enable="1"eaccelerator.optimizer="1"eaccelerator.check_mtime="1"eaccelerator.debug="0"eaccelerator.log_file = "/web/soft/php/var/log/eaccelerator_log"eaccelerator.filter=""eaccelerator.shm_max="0"eaccelerator.shm_ttl="3600"eaccelerator.shm_prune_period="3600"eaccelerator.shm_only="0"eaccelerator.compress="1"eaccelerator.compress_level="9" 增加eaccelerator目录 mkdir -p /tmp/eaccelerator ------------------------- Re【原创】配置阿里云服务器CentosRedHat64位服务器 安装 libevent cd /web/backup/softtar zvxf libevent-2.0.20-stable.tar.gzcd libevent-2.0.20-stable./configuremakemake installcd ../ln -s /usr/local/lib/libevent-2.0.so.5 /usr/lib64/libevent-2.0.so.5 ------------------------- Re【原创】配置阿里云服务器CentosRedHat64位服务器 安装 memcached cd /web/backup/softtar zvxf memcached-1.4.15.tar.gzcd memcached-1.4.15./configuremakemake installcd ../ 启动 memcached /usr/local/bin/memcached -d -m 100  -p 11211 -u root 内存小童鞋要注意了:这会以守护程序的形式启动 memcached(-d),为其分配 100m 内存(-m 100),并指定监听 localhost,即端口 11211 让 memcached 自动启动 vim /etc/rc.d/rc.local 在页尾加入以下代码 以www用户启动 /usr/local/bin/memcached -d -m 100  -p 11211 -u www 附上常用命令 -d 选项是启动一个守护进程, -m 是分配给Memcache使用的内存数量,单位是MB,这里是10MB -u 是运行Memcache的用户,这里是root -l 是监听的服务器IP地址,如果有多个地址的话,这里指定了服务器的IP地址192.168.0.122 -p 是设置Memcache监听的端口,这里设置了12000,最好是1024以上的端口 -c 选项是最大运行的并发连接数,默认是1024,这里设置了256,按照你服务器的负载量来设定 -P 是设置保存Memcache的pid文件 ------------------------- Re【原创】配置阿里云服务器CentosRedHat64位服务器 安装 PDO_MYSQL ln -s /web/soft/mysql/include/* /usr/local/include/cd /web/backup/softtar zxvf PDO_MYSQL-1.0.2.tgzcd PDO_MYSQL-1.0.2//web/soft/php/bin/phpize./configure --with-php-config=/web/soft/php/bin/php-config --with-pdo-mysql=/web/soft/mysqlmakemake installcd ../ 修改php配置文件,使其支持pdo vim /web/soft/php/etc/php.ini 在文件中搜索extension = "memcache.so"(刚才添加的代码) ,在下面增加 extension="pdo_mysql.so" 运行 /web/soft/php/bin/php -m 查看是否含有pdo_mysql 含有则成功 安装 php-fpm cp /web/soft/php/etc/php-fpm.conf.default /web/soft/php/etc/php-fpm.confvim /web/soft/php/etc/php-fpm.conf 修改以下地方   注意:以下代码每行所在的位置均不同,如果找到的代码前面有;要去除,后面的数字不一样也要修改,这个要注意 如何边编辑边查找? 找到对应行编辑后按下ESC再输入 /查找内容 查找就行了 [global]pid = run/php-fpm.pid-perror_log = log/php-fpm.logemergency_restart_threshold = 10emergency_restart_interval = 1mprocess_control_timeout = 5spm.start_servers = 20pm.min_spare_servers = 5pm.max_spare_servers = 20pm.max_children = 20 修改nginx,使其支持php vim /web/soft/nginx/conf/nginx.conf 找到并修改以下代码把前面#号去除 location ~ \.php$ {    root           html;    fastcgi_pass   127.0.0.1:9000;    fastcgi_index  index.php;    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;    include        fastcgi_params;} 将php-fpm 作为服务运行 cp /web/backup/soft/php-5.4.8/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpmchmod 700 /etc/init.d/php-fpm chkconfig --add php-fpm chkconfig --level 345 php-fpm on 服务方式启动php-fpm service php-fpm restart 现在我们来重启下服务器 reboot 重启成功后运行ps aux查看正在运行的进程 是否有nginx php-pfm mysql 有的话就说明成功了 ------------------------- Re【原创】配置阿里云服务器CentosRedHat64位服务器 装好了服务器,有些童鞋可能要迫不及待想架设网站了今天太累了,明天继续更新怎么在服务器架设网站 (将以phpmyadmin、phpwind8.7、phpwind9.0、discuz2.5安装举例) ------------------------- Re【原创】配置阿里云服务器CentosRedHat64位服务器 架设网站前先创建两个文件夹 config  用来存放nginx网站配置文件 logs  用来存放日志 mkdir /web/data/configmkdir /web/data/logs 再把 nginx 配置下 vim /web/soft/nginx/conf/nginx.conf 在文件尾部} 上面增加 include /web/data/config/*.conf; 此作用是设置nginx网站配置文件路径,以后新增网站就不要来编辑nginx.conf文件了,网站多时也方便管理 平滑重启nginx(以后每增加或修改nginx配置文件时都要重启) service nginx reload ------------------------- Re【原创】配置阿里云服务器CentosRedHat64位服务器 安装 phpMyadmin 先把用来访问phpMyadmin的域名解析到服务器 下载个最新的 3.5.3版本 下载地址 http://sourceforge.net/projects/ ... 1f2263b6722fa88ca82 备用地址 http://jaist.dl.sourceforge.net/ ... ll-languages.tar.gz 下载后把它传到/web/backup/code 此文件夹是用来放源码的 cd /web/backup/codetar zxvf phpMyAdmin-3.5.3-all-languages.tar.gz -C /web/www/ cd /web/wwwmv phpMyAdmin-3.5.3-all-languages/ phpmyadmin创建nginx配置文件 vim /web/data/config/phpmyadmin.conf输入以下内容( 代码里的www.phpmyadmin.com 改为自己要绑定的网址) server {    listen 80;    client_max_body_size 10M;    server_name www.phpmyadmin.com;    index index.php index.html index.htm;    root /web/www/phpmyadmin;    autoindex off;    location ~ .*\.(php|php5|php4|shtml|xhtml|phtml)?$ {        fastcgi_pass   127.0.0.1:9000;        include fastcgi.conf;    }        location ~ .*\.(ico|gif|jpg|jpeg|png|bmp|swf|js|css)$        {               expires 5d;          access_log off;        }    access_log  /web/data/logs/phpmyadmin.log;} 重启下Nginx service nginx reload 访问看看是否成功了
svaaa 2019-12-02 00:26:00 0 浏览量 回答数 0

云产品推荐

上海奇点人才服务相关的云产品 小程序定制 上海微企信息技术相关的云产品 国内短信套餐包 ECS云服务器安全配置相关的云产品 开发者问答 阿里云建站 自然场景识别相关的云产品 万网 小程序开发制作 视频内容分析 视频集锦 代理记账服务 阿里云AIoT