精华内容
下载资源
问答
  • Nginx启动SSL功能,并进行功能优化,你看这个就足够了一:开始Nginx的SSL模块1.1 Nginx如果未开启SSL模块,配置Https时提示错误nginx: [emerg] the "ssl" parameter requires ngx_...原因也很简单,nginx缺少...

    Nginx启动SSL功能,并进行功能优化,你看这个就足够了

    一:开始Nginx的SSL模块

    1.1 Nginx如果未开启SSL模块,配置Https时提示错误

    nginx: [emerg] the "ssl" parameter requires ngx_http_ssl_module in /usr/local/nginx/conf/nginx.conf:37

    原因也很简单,nginx缺少http_ssl_module模块,编译安装的时候带上--with-http_ssl_module配置就行了,但是现在的情况是我的nginx已经安装过了,怎么添加模块,其实也很简单,往下看: 做个说明:我的nginx的安装目录是/usr/local/nginx这个目录,我的源码包在/usr/local/src/nginx-1.6.2目录

    1.2 Nginx开启SSL模块

    切换到源码包:

    cd /usr/local/src/nginx-1.11.3

    查看nginx原有的模块

    /usr/local/nginx/sbin/nginx -V

    在configure arguments:后面显示的原有的configure参数如下:

    --prefix=/usr/local/nginx --with-http_stub_status_module

    那么我们的新配置信息就应该这样写:

    ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_modul

    运行上面的命令即可,等配置完

    配置完成后,运行命令

    make

    这里不要进行make install,否则就是覆盖安装

    然后备份原有已安装好的nginx

    cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak

    然后将刚刚编译好的nginx覆盖掉原有的nginx(这个时候nginx要停止状态)

    cp ./objs/nginx /usr/local/nginx/sbin/

    然后启动nginx,仍可以通过命令查看是否已经加入成功

    /usr/local/nginx/sbin/nginx -V

    Nginx 配置Http和Https共存

    server {

    listen 80 default backlog=2048;

    listen 443 ssl;

    server_name wosign.com;

    root /var/www/html;

    ssl_certificate /usr/local/Tengine/sslcrt/ wosign.com.crt;

    ssl_certificate_key /usr/local/Tengine/sslcrt/ wosign.com .Key;

    }

    把ssl on;这行去掉,ssl写在443端口后面。这样http和https的链接都可以用

    Nginx 配置SSL安全证书重启避免输入密码

    可以用私钥来做这件事。生成一个解密的key文件,替代原来key文件。

    openssl rsa -in server.key -out server.key.unsecure

    Nginx SSL性能调优

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

    ssl_ciphers ECDHE-RSA-AES256-SHA384:AES256-SHA256:RC4:HIGH:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!AESGCM;

    ssl_prefer_server_ciphers on;

    ssl_session_cache shared:SSL:10m;

    ssl_session_timeout 10m;

    感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

    展开全文
  • Linux SSL

    2017-07-27 21:32:47
    gcc -o ssl_server server.c -Wall -g -lssl -lcrypto http://www.linuxidc.com/Linux/2011-04/34523.htm 服务端#include #include #include #include #include <sys/types

    gcc -o ssl_server server.c -Wall -g -lssl -lcrypto
    其中-l是指加入的某个库的意思,-lssl 表示加入的库是libssl.so或者是libssl.a的意思,其中lib和扩展名可以不写
    至于搜索路径可以-L/lib -L/usr/lib 其中-L/path是搜索路径的意思,可以用find / -name libssl.*查找下在哪个路径下

    sudo apt-get install libssl-dev
    http://www.linuxidc.com/Linux/2011-04/34523.htm
    http://blog.csdn.net/guozhiyingguo/article/details/52791284
    ./ssl_server 7838 1 server.crt server.key
    ./ssl_client 127.0.0.1 7838

    服务端

    #include <stdio.h>
    #include <stdlib.h>
    #include <errno.h>
    #include <string.h>
    #include <sys/types.h>
    #include <netinet/in.h>
    #include <sys/socket.h>
    #include <sys/wait.h>
    #include <unistd.h>
    #include <arpa/inet.h>
    #include <openssl/ssl.h>
    #include <openssl/err.h>
    
    #define MAXBUF 1024
    
    int main(int argc, char **argv)
    {
        int sockfd, new_fd;
        socklen_t len;
        struct sockaddr_in my_addr, their_addr;
        unsigned int myport, lisnum;
        char buf[MAXBUF + 1];
        SSL_CTX *ctx;
    
        if (argv[1])
            myport = atoi(argv[1]);
        else
            myport = 7838;
    
        if (argv[2])
            lisnum = atoi(argv[2]);
        else
            lisnum = 2;
    
        /* SSL 库初始化 */
        SSL_library_init();
        /* 载入所有 SSL 算法 */
        OpenSSL_add_all_algorithms();
        /* 载入所有 SSL 错误消息 */
        SSL_load_error_strings();
        /* 以 SSL V2 和 V3 标准兼容方式产生一个 SSL_CTX ,即 SSL Content Text */
        ctx = SSL_CTX_new(SSLv23_server_method());
        /* 也可以用 SSLv2_server_method() 或 SSLv3_server_method() 单独表示 V2 或 V3标准 */
        if (ctx == NULL) {
            ERR_print_errors_fp(stdout);
            exit(1);
        }
        /* 载入用户的数字证书, 此证书用来发送给客户端。 证书里包含有公钥 */
        if (SSL_CTX_use_certificate_file(ctx, argv[3], SSL_FILETYPE_PEM) <= 0) {
            ERR_print_errors_fp(stdout);
            exit(1);
        }
        /* 载入用户私钥 */
        if (SSL_CTX_use_PrivateKey_file(ctx, argv[4], SSL_FILETYPE_PEM) <= 0) {
            ERR_print_errors_fp(stdout);
            exit(1);
        }
        /* 检查用户私钥是否正确 */
        if (!SSL_CTX_check_private_key(ctx)) {
            ERR_print_errors_fp(stdout);
            exit(1);
        }
    
        /* 开启一个 socket 监听 */
        if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1) {
            perror("socket");
            exit(1);
        } else
            printf("socket created\n");
    
        bzero(&my_addr, sizeof(my_addr));
        my_addr.sin_family = AF_INET;
        my_addr.sin_port = htons(myport);
        my_addr.sin_addr.s_addr = INADDR_ANY;
    
        if (bind(sockfd, (struct sockaddr *)&my_addr, sizeof(struct sockaddr))== -1) {
            perror("bind");
            exit(1);
        } else
            printf("binded\n");
    
        if (listen(sockfd, lisnum) == -1) {
            perror("listen");
            exit(1);
        } else
            printf("begin listen\n");
    
        while (1) {
            SSL *ssl;
            len = sizeof(struct sockaddr);
            /* 等待客户端连上来 */
            if ((new_fd = accept(sockfd, (struct sockaddr *) &their_addr,&len)) == -1) {
                perror("accept");
                exit(errno);
            } else
                printf("server: got connection from %s, port %d, socket %d\n",inet_ntoa(their_addr.sin_addr),ntohs(their_addr.sin_port), new_fd);
    
            /* 基于 ctx 产生一个新的 SSL */
            ssl = SSL_new(ctx);
            /* 将连接用户的 socket 加入到 SSL */
            SSL_set_fd(ssl, new_fd);
            /* 建立 SSL 连接 */
            if (SSL_accept(ssl) == -1) {
                perror("accept");
                close(new_fd);
                break;
            }
    
            /* 开始处理每个新连接上的数据收发 */
            bzero(buf, MAXBUF + 1);
            strcpy(buf, "server->client");
            /* 发消息给客户端 */
            len = SSL_write(ssl, buf, strlen(buf));
    
            if (len <= 0) {
                printf
                    ("消息'%s'发送失败!错误代码是%d,错误信息是'%s'\n", buf, errno, strerror(errno));
                goto finish;
            } else
                printf("消息'%s'发送成功,共发送了%d个字节!\n",buf, len);
    
            bzero(buf, MAXBUF + 1);
            /* 接收客户端的消息 */
            len = SSL_read(ssl, buf, MAXBUF);
            if (len > 0)
                printf("接收消息成功:'%s',共%d个字节的数据\n",buf, len);
            else
                printf("消息接收失败!错误代码是%d,错误信息是'%s'\n",errno, strerror(errno));
            /* 处理每个新连接上的数据收发结束 */
          finish:
            /* 关闭 SSL 连接 */
            SSL_shutdown(ssl);
            /* 释放 SSL */
            SSL_free(ssl);
            /* 关闭 socket */
            close(new_fd);
        }
        /* 关闭监听的 socket */
        close(sockfd);
        /* 释放 CTX */
        SSL_CTX_free(ctx);
        return 0;
    }

    客户端

    #include <stdio.h>
    #include <string.h>
    #include <errno.h>
    #include <sys/socket.h>
    #include <resolv.h>
    #include <stdlib.h>
    #include <netinet/in.h>
    #include <arpa/inet.h>
    #include <unistd.h>
    #include <openssl/ssl.h>
    #include <openssl/err.h>
    
    #define MAXBUF 1024
    
    void ShowCerts(SSL * ssl)
    {
        X509 *cert;
        char *line;
    
        cert = SSL_get_peer_certificate(ssl);
        if (cert != NULL) {
            printf("数字证书信息:\n");
            line = X509_NAME_oneline(X509_get_subject_name(cert), 0, 0);
            printf("证书: %s\n", line);
            free(line);
            line = X509_NAME_oneline(X509_get_issuer_name(cert), 0, 0);
            printf("颁发者: %s\n", line);
            free(line);
            X509_free(cert);
        } else
            printf("无证书信息!\n");
    }
    
    int main(int argc, char **argv)
    {
        int sockfd, len;
        struct sockaddr_in dest;
        char buffer[MAXBUF + 1];
        SSL_CTX *ctx;
        SSL *ssl;
    
        if (argc != 3) {
            exit(0);
        }
    
        /* SSL 库初始化,参看 ssl-server.c 代码 */
        SSL_library_init();
        OpenSSL_add_all_algorithms();
        SSL_load_error_strings();
        ctx = SSL_CTX_new(SSLv23_client_method());
        if (ctx == NULL) {
            ERR_print_errors_fp(stdout);
            exit(1);
        }
    
        /* 创建一个 socket 用于 tcp 通信 */
        if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
            perror("Socket");
            exit(errno);
        }
        printf("socket created\n");
    
        /* 初始化服务器端(对方)的地址和端口信息 */
        bzero(&dest, sizeof(dest));
        dest.sin_family = AF_INET;
        dest.sin_port = htons(atoi(argv[2]));
        if (inet_aton(argv[1], (struct in_addr *) &dest.sin_addr.s_addr) == 0) {
            perror(argv[1]);
            exit(errno);
        }
        printf("address created\n");
    
        /* 连接服务器 */
        if (connect(sockfd, (struct sockaddr *) &dest, sizeof(dest)) != 0) {
            perror("Connect ");
            exit(errno);
        }
        printf("server connected\n");
    
        /* 基于 ctx 产生一个新的 SSL */
        ssl = SSL_new(ctx);
        SSL_set_fd(ssl, sockfd);
        /* 建立 SSL 连接 */
        if (SSL_connect(ssl) == -1)
            ERR_print_errors_fp(stderr);
        else {
            printf("Connected with %s encryption\n", SSL_get_cipher(ssl));
            ShowCerts(ssl);
        }
    
        /* 接收对方发过来的消息,最多接收 MAXBUF 个字节 */
        bzero(buffer, MAXBUF + 1);
        /* 接收服务器来的消息 */
        len = SSL_read(ssl, buffer, MAXBUF);
        if (len > 0)
            printf("接收消息成功:'%s',共%d个字节的数据\n",buffer, len);
        else {
            printf("消息接收失败!错误代码是%d,错误信息是'%s'\n",errno, strerror(errno));
            goto finish;
        }
        bzero(buffer, MAXBUF + 1);
        strcpy(buffer, "from client->server");
        /* 发消息给服务器 */
        len = SSL_write(ssl, buffer, strlen(buffer));
        if (len < 0)
            printf("消息'%s'发送失败!错误代码是%d,错误信息是'%s'\n",buffer, errno, strerror(errno));
        else
            printf("消息'%s'发送成功,共发送了%d个字节!\n", buffer, len);
    
      finish:
        /* 关闭连接 */
        SSL_shutdown(ssl);
        SSL_free(ssl);
        close(sockfd);
        SSL_CTX_free(ctx);
        return 0;
    }
    展开全文
  • Linux部署SSL,实现https访问

    千次阅读 2019-07-13 16:29:14
    Linux部署SSL,实现https访问 在Nginx/Tengine服务器上安装证书 2019年7月10日 16:09:03 您可以从阿里云SSL证书服务控制台下载证书安装到您的Nginx/Tengine服务器上。 本篇幅 以ContOS7 / 为例 参考:阿里云文档 本...

    Linux部署SSL,实现https访问

    在Nginx/Tengine服务器上安装证书
    2019年7月10日 16:09:03
    您可以从阿里云SSL证书服务控制台下载证书安装到您的Nginx/Tengine服务器上。

    本篇幅 以ContOS7 / 为例
    参考:阿里云文档

    本文档证书名称以domain name为示例,如证书文件名称为domain name.pem,证书密钥文件名称为domain name.key。

    下载的Nginx证书压缩文件解压后包含:
    .pem:证书文件。PEM文件的扩展名为CRT格式。
    .key:证书的密钥文件。申请证书时如果未选择自动创建CRS,则下载的证书文件压缩包中不会包含.key文件,需要您将自己手动常见的私钥文件拷贝到cert目录下。
    说明 .pem扩展名的证书文件采用Base64-encoded的PEM格式文本文件,您可根据需要修改成其他扩展名。
    证书的格式详见主流数字证书都有哪些格式。

    操作步骤

    1. 申请认证HTTPS 成功后下载 SSL压缩包
    2. 把解密钥按照配置目录文件位置放在nginx根目录下面
    3. 配置nginx.conf 配置文件配置 server
    4. 重启服务器 (重点一定要先杀死进程在重启或者停止原先的服务)

    在证书下载对话框中定位到Nginx/Tengine服务器,并单击右侧操作栏的下载将Nginx版证书压缩包下载到本地。
    解压Nginx证书。
    您将看到文件夹中有2个文件:
    证书文件(以.pem为后缀或文件类型)
    密钥文件(以.key为后缀或文件类型)

    在Nginx安装目录下创建cert目录,并将下载的证书文件和密钥文件拷贝到cert目录中。
    说明 如果您在申请证书时选择手动创建CSR文件,请将对应的密钥文件放到cert目录中,并命名为domain name.key。
    打开Nginx安装目录 > conf文件夹 > nginx.conf文件,在nginx.conf文件中找到以下属性:
    放大查看

    HTTPS server

      server {
      listen 443;
      server_name localhost;
      ssl on;
      ssl_certificate cert.pem;
      ssl_certificate_key cert.key;
      ssl_session_timeout 5m;
      ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
      ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
      ssl_prefer_server_ciphers on;
      location / {
    

    修改nginx.conf文件如下:
    放大查看

    以下属性中以ssl开头的属性代表与证书配置有关,其他属性请根据自己的需要进行配置。

    server {
    listen 443;
    server_name localhost;  # localhost修改为您证书绑定的域名。
    ssl on;   #设置为on启用SSL功能。
    root html;
    index index.html index.htm;
    ssl_certificate cert/domain name.pem;   #将domain name.pem替换成您证书的文件名。
    ssl_certificate_key cert/domain name.key;   #将domain name.key替换成您证书的密钥文件名。
    ssl_session_timeout 5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;  #使用此加密套件。
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;   #使用该协议进行配置。
    ssl_prefer_server_ciphers on;   
    location / {
    root html;   #站点目录。
    index index.html index.htm;   
    }
    }
    

    保存nginx.conf文件后退出。
    重启Nginx服务器。
    说明 如果您有配置多个虚拟主机Include conf/vhost,参考虚拟主机配置SSL证书 进行配置。
    (可选步骤)设置http请求自动跳转https。
    在需要跳转的http站点下添加以下rewrite语句,实现http访问自动跳转到https页面

    虚拟主机配置SSL证书
    打开虚拟主机配置文件vhost.conf或*.conf,复制以下内容粘贴到下方位置、将端口改为443(https默认端口)并增加证书相关配置。

    server {
     listen 80;
     server_name localhost ;
     location / {
    index index.html index.htm;
    }
    server {
    listen 443;
    server_name localhost;
    ssl on;
    root html;
    index index.html index.htm;
    ssl_certificate cert/domain name.pem;   #将domain name.pem替换成您证书的文件名。
    ssl_certificate_key cert/domain name.key;   #将domain name.key替换成您证书的密钥文件名。
    ssl_session_timeout 5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    location / {
    index index.html index.htm;
    }
    

    保存nginx.conf文件后退出。
    重启Nginx服务器。

    1. 重启服务: service nginx restart
    2. 快速停止或关闭Nginx:nginx -s stop
    3. 正常停止或关闭Nginx:nginx -s quit
    4. 配置文件修改重装载命令:nginx -s reload
    
    展开全文
  • linuxssl连接mysql以及主从配置

    千次阅读 2015-06-27 23:37:37
    在这里我结合其他人写的资料加上我自己的总结谈谈ssl连接mysql,虽然网上好多人都写了很多教程但是中间省略了很多,最终导致我们配置失败,在这我详细的介绍一下,有些的不好的地方也希望大家多多指点 我们印象中的...


    在这里我结合其他人写的资料加上我自己的总结谈谈ssl连接mysql,虽然网上好多人都写了很多教程但是中间省略了很多,最终导致我们配置失败,在这我详细的介绍一下,有些的不好的地方也希望大家多多指点

    我们印象中的主从复制过程或远程连接到MySQL/MariaDB所有的链接通信中的数据都是明文的,在局域网内连接倒问题不大;要是在外网里访问数据或则复制,则安全隐患会被放大很多。由于项目要求需要直接和外网的一台实例进行同步。所以本文介绍下通过SSL加密的方式进行复制的方法,来进一步提高数据的安全性。本文会一起介绍MySQLMariaDB

    环境搭建:

    默认情况下ssl都是关闭的,要是have_ssl显示NO,则表示数据库不支持SSL,需要重新编译安装来支持它,显示为DISABLED表示我们的数据库只是关闭了SSL,并没有没有启用它。

    我们通过show命令显示变量ssl

    >show variableslike'%ssl%';+---------------+----------+

    | Variable_name| Value|

    +---------------+----------+

    | have_openssl|DISABLED|

    | have_ssl|DISABLED|

    | ssl_ca||

    | ssl_capath||

    | ssl_cert||

    | ssl_cipher||

    | ssl_key||

    +---------------+----------+

    现在来开启SSL,在配置文件的mysqld选项组里面添加:

    ssl

    重启数据库,再次查看:

    show variableslike'%ssl%';

    +---------------+-------+

    | Variable_name| Value|

    +---------------+-------+

    | have_openssl|YES|

    | have_ssl|YES|

    | ssl_ca||

    | ssl_capath||

    | ssl_cert||

    | ssl_cipher||

    | ssl_key||

    +---------------+-------+

    接着就是配置SSL的重点了:

    1:在主服务器上创建CA证书

    在这需要注意一点就是生成证书时你需要填写各种配置信息包括所在国家,你的姓名,公司名等在这要保证 生成CA根证书  根据提示填写各个字段但注意 Common Name 最好是有效根域 ( freedomwind.com ),   并且不能和后来服务器证书签署请求文件中填的 Common Name 完全一样,否则会导致证书生成的时候出现如下错误:error 18 at 0 depth lookup:self signed certificate 错误  

    正常验证证书的有效性应该会提示:

    shell> openssl verify -CAfile ca.pemserver-cert.pem client-cert.pem

    server-cert.pem: OK

    client-cert.pem: OK

     

     接下来我们开始配置: 

    openssl genrsa 2048> ca-key.pem

    openssl req -new-x509-nodes-days1000-key ca-key.pem> ca-cert.pem

    2:在主服务器上创建服务端的证书:

    openssl req-newkey rsa:2048-days1000-nodes-keyoutserver-key.pem> server-req.pem

    openssl x509 -req-in server-req.pem-days1000-CA ca-cert.pem-CAkey ca-key.pem-set_serial01> server-cert.pem

    3:在主服务器上创建客户端的证书:

    openssl req-newkey rsa:2048-days1000-nodes-keyoutclient-key.pem> client-req.pem

    openssl x509 -req-in client-req.pem-days1000-CA ca-cert.pem-CAkey ca-key.pem-set_serial01> client-cert.pem

    上面的操作都是在主上执行的,并且都在/etc/mysql/目录下执行的。 这里需要注意的是MySQLMariaDB不同:

    MySQL在生成上面证书的时候需要输入大量用户信息,在CA上创建证书要注意所有的用户信息要和CA中的 一致 ,从国家到部门都要相同,否则会造成证书无法使用,直接全部默认回车即可。要是用户信息一样则MariaDB会报错

    ERROR2026 (HY000):SSLconnection error: error:00000001:lib(0):func(0):reason(1)

    [ERROR] Slave I/O:errorconnectingto master ... - retry-time:60 retries:86400 message:SSL connection error: error:14090086:SSLroutines:SSL3_GET_SERVER_CERTIFICATE:certificate verifyfailed, Internal MariaDBerror code:2026

    MariaDB在生成上面证书的时候也是需要输入大量用户信息,和MySQL不同的是输入的用户信息服务端和客户端 不能一致 。即服务端输入和客户端输入不一样。具体原因见 这里 ,最后可以通过:

    openssl verify-CAfile/etc/mysql/ca-cert.pem/etc/mysql/server-cert.pem/etc/mysql/client-cert.pem

    验证MariaDB证书的有效性。好了,所有的证书已经生成,那么在主上需要修改配置文件,把生成的证书配置起来:

    ssl-ca=/etc/mysql/ca-cert.pem

    ssl-cert=/etc/mysql/server-cert.pem

    ssl-key=/etc/mysql/server-key.pem

    并且把生成的证书: ca-cert.pemclient-cert.pemclient-key.pem复制给从服务器 

    重启主服务器,查看SSL的情况:

    >show variableslike'%ssl%';

    +---------------+----------------------------+

    | Variable_name| Value|

    +---------------+----------------------------+

    | have_openssl|DISABLED|

    | have_ssl|DISABLED|

    | ssl_ca|/etc/mysql/ca-cert.pem|

    | ssl_capath||

    | ssl_cert|/etc/mysql/server-cert.pem|

    | ssl_cipher||

    | ssl_key|/etc/mysql/server-key.pem|

    +---------------+----------------------------+

    发现have_ssl变成了DISABLED,查看错误日志:

    SSL error: Unableto get privatekeyfrom'/etc/mysql/server-key.pem'

    14122911:09:02[Warning] Failed to setup SSL

    14122911:09:02[Warning] SSLerror: Unable to get privatekey

    发现服务端的key不可用,在网上到了解决办法,大家可以自己看:http://askubuntu.com/questions/194074/enabling-ssl-in-mysql ,概括的说就是openssl新版本的变化导致的,这里有2个解决办法来重新生成server-key.pem:

    方法1:openssl rsa

    openssl rsa-in server-key.pem-outserver-key.pem

    再次查看SSL情况:

    >show variableslike'%ssl%';

    +---------------+----------------------------+

    | Variable_name| Value|

    +---------------+----------------------------+

    | have_openssl| YES|

    | have_ssl| YES|

    | ssl_ca|/etc/mysql/ca-cert.pem|

    | ssl_capath||

    | ssl_cert|/etc/mysql/server-cert.pem|

    | ssl_cipher||

    | ssl_key|/etc/mysql/server-key.pem|

    +---------------+----------------------------+

    方法2:这里也可以直接安装openssl0.9.8x版本进行证书生成。 

    wget http://www.openssl.org/source/openssl-0.9.8x.tar.gz

    tar xvfz openssl-0.9.8x.tar.gz

    cd openssl-0.9.8x

    ./config--prefix=/usr/local/openssl-0.9.8

    make

    make install

    本文是通过方法1来进行解决的。

    到此在主上的操作完成,再生成一个复制帐号:REQUIRE SSL

    GRANTREPLICATION SLAVEON*.*TO'rep'@'192.168.200.%' IDENTIFIED BY'123456'REQUIRE SSL;

    接着就去从上配置。之前已经把生成的证书给了从服务器,那么在配置之前可以用SSL连接主服务器试试:

    $mysql--ssl-ca=ca-cert.pem--ssl-cert=client-cert.pem--ssl-key=client-key.pem -h192.168.200.245 -urep -p

    Enter password:

    SSL error: Unableto get privatekeyfrom'client-key.pem'

    ERROR 2026 (HY000): SSL connection error

    同理,也是SSL的问题导致的,重新生成client-key.pem,方法同重新生成server-key.pem一样:

    openssl rsa-in client-key.pem-outclient-key.pem

    继续用SSL测试连接:

    $mysql--ssl-ca=ca-cert.pem--ssl-cert=client-cert.pem--ssl-key=client-key.pem -h192.168.200.245 -urep -p

    Enter password:

    Welcome to the MySQL monitor. Commandsendwith ;or \g.

    Your MySQL connection idis763

    Server version:5.5.35-0ubuntu0.12.04.2-log (Ubuntu)

    Copyright (c) 2000,2014, Oracleand/or its affiliates.All rightsreserved.

    Oracle is a registered trademarkof OracleCorporationand/or its

    affiliates. Other names maybetrademarksof their respective

    owners.

    Type 'help;'or'\h'for help. Type'\c'to clear thecurrent input statement.

    mysql> \s

    --------------

    mysql Ver14.14 Distrib5.5.37,for debian-linux-gnu (x86_64)using readline6.2

    Connection id: 763

    Currentdatabase:

    Currentuser:rep@192.168.200.212

    SSL: Cipher in use is DHE-RSA-AES256-SHA

    Current pager: stdout

    Using outfile: ''

    Using delimiter: ;

    Server version:5.5.35-0ubuntu0.12.04.2-log (Ubuntu)

    Protocol version:10

    Connection: 192.168.200.245 via TCP/IP

    Server characterset: utf8mb4

    Db characterset: utf8mb4

    Client characterset: utf8

    Conn. characterset: utf8

    TCP port: 3306

    Uptime: 22min52 sec

    Threads: 3 Questions:2325 Slowqueries:1 Opens:7483 Flush tables:1Open tables:100 Queries per secondavg:1.694

    SSL测试连接成功,并且登入的SSL协议是: Cipher in useisDHE-RSA-AES256-SHA

    继续在从上配置SSL:

    ssl

    ssl-ca=/etc/mysql/ca-cert.pem

    ssl-cert=/etc/mysql/client-cert.pem

    ssl-key=/etc/mysql/client-key.pem

    查看SSL是否被支持:

    >show variableslike'%ssl%';

    +---------------+----------------------------+

    | Variable_name| Value|

    +---------------+----------------------------+

    | have_openssl| YES|

    | have_ssl| YES|

    | ssl_ca|/etc/mysql/ca-cert.pem|

    | ssl_capath||

    | ssl_cert|/etc/mysql/client-cert.pem|

    | ssl_cipher||

    | ssl_key|/etc/mysql/client-key.pem|

    +---------------+----------------------------+

    从上SSL也被正确支持,那么最后开始配置主从replicate 在从上CHANGE:

    CHANGE MASTERTO MASTER_HOST='192.168.200.245', MASTER_USER='rep',MASTER_PASSWORD='123456', MASTER_LOG_FILE='mysql-bin.000042', MASTER_LOG_POS=521,MASTER_SSL=1,MASTER_SSL_CA='/etc/mysql/ca-cert.pem',MASTER_SSL_CERT='/etc/mysql/client-cert.pem',MASTER_SSL_KEY='/etc/mysql/client-key.pem'

    测试:

    M:

    >createtable tmp_1229(idint,namevarchar(100))default charset utf8;

    >insertinto tmp_1229values(1,'a'),(2,'b'),(3,'c');

    >select*from tmp_1229;

    +------+------+

    | id| name|

    +------+------+

    |1| a|

    |2| b|

    |3| c|

    +------+------+

    S:

    >select*from tmp_1229;

    +------+------+

    | id| name|

    +------+------+

    |1| a|

    |2| b|

    |3| c|

    +------+------+

     

    以上同步成功。

    总结:

    SSL(Secure Sockets Layer安全套接层),及其继任者传输层安全(Transport Layer SecurityTLS)是为网络通信提供安全及数据完整性的一种安全协议。复制默认是明文进行传输的,通过SSL加密可以大大提高数据的安全性。在上面的过程中,遇到一些问题:

    1:openssl版本问题引起的证书不可用,文中已经说明解决办法。

    2:MariaDB证书的不可用,原因是生成服务端客户端证书的时候输入一致导致的,文中也说明了解决办法。

    3:要是配置有问题,在用SSL登陆的时候,可以发现错误信息,可以直接定位到哪里出问题。

    ssl登陆:

    mysql--ssl-ca=ca-cert.pem--ssl-cert=client-cert.pem--ssl-key=client-key.pem -h192.168.200.245 -urep -p

    4:在配置MariaDB的时候,在生成证书的时候可以直接先验证,查看是否有问题。

    验证:

    openssl verify-CAfile/etc/mysql/ca-cert.pem/etc/mysql/server-cert.pem/etc/mysql/client-cert.pem

    5:要是openssl版本没有问题,不需要再次通过openssl rsa再次生成,具体的安装配置方法参照本文章即可。

                                                 Windows客户端连接

    在这我使用的是navicat-premium11.1

    打开数据库管理工具后点击左上角的新建连接,选择mysql之后我们点击常规选项数据我们数据库的地址账户名与密码然后再点击ssl,进去之后把我们在server端生成的ca.pem(CA证书),client-cert.pem(客户端证书),client-key.pem(客户端秘钥)t填入进去即可,单机测试连接显示测试成功。

                                               linux客户端连接

    配置好mysql客户端的配置文件后我们 mysql --ssl-ca=ca.pem--ssl-cert=client-cert.pem --ssl-key=client-key.pem -h192.168.1.115 -utest1 -p进行连接服务器

     

     

    展开全文
  • 关闭SSL证书验证

    千次阅读 2018-07-04 13:18:00
    转载 Python3之关闭SSL证书验证 转载Python requests 移除SSL认证,控制台输出InsecureRequestWarning取消方法 报错信息: 1 Traceback (most recent call last): 2 File "D:\Python36\lib\site-packages\...
  • Linux下socket ssl编程

    千次阅读 2015-03-23 08:38:23
    Linux下socket ssl编程 摘自:http://www.tootoogo.org/wordpress/?p=611 作者: admin日期: 三月 22, 2011 编译程序用下列命令: gcc -Wall ssl-client.c -o client gcc -Wall ssl-server.c -o server ...
  • Linux中怎么使用SSL搭建https服务器

    千次阅读 2019-01-23 18:52:48
    Linux中怎么搭建https服务器 一、准备工作: 1、挂载光盘: 使用命令: mount /dev/sr0 /mnt 2、配置yum: 如图所示: 3、安装httpd服务: 使用命令: yum install httpd -y 4、关闭防火墙: systemctl stop ...
  • linux关闭ssh连接

    2016-04-22 10:53:43
    linux 关闭SSH 连接用户1.查明登陆端口;# whoroot pts/1 Apr 8 00:06 (172.29.0.29)root pts/2 Apr 8 04:15 (172.29.0.21)2.通知该用户将要关闭他:# echo "I will close your connection" > /dev/pts/2这样他的...
  • Linux服务篇--SSL

    千次阅读 2019-04-08 10:23:45
        libssl:加密模块应用库,实现了ssl及tls,包nss openssl命令:   两种运行模式:交互模式和批处理模式   openssl version:程序版本号   标准命令、消息摘要命令、加密命令   标准命令:  ...
  • 阿里云轻量级服务器(宝塔Linux面板)SSL证书部署 1.什么是SSL 证书? SSL 证书就是遵守 SSL 安全套接层协议的服务器数字证书。而 SSL 安全协议最初是由美国网景 Netscape Communication 公司设计开发的,全称为:...
  • 1、首先你需要已经购买了ssl证书,如果没有,个人免费版推荐站长之家免费申请,申请地址奉上:http://aq.chinaz.com/SSL,必须注册才可以申请,因为后面要到管理中心下载证书 ...3、景安linux虚拟主机,开启.
  • 记录一次在linux上配置ssl证书

    千次阅读 2018-11-23 15:51:36
    记录一次在linux上配置ssl证书提前准备开始申请配置 由于最近项目的微信支付一块需要涉及到退款,这个需要https,所以先自己弄一个测试,在此记录这一次配置ssl证书的过程,与各位分享一下!话不多说,开始干! 提前...
  • 1、在Apache的安装目录下创建cert目录,并且将下载的全部文件拷贝到cert目录中。如果申请证书时是自己创建的CSR文件,请将对应的私钥文件放到cert目录下并且...#LoadModule ssl_module modules/mod_ssl.so (如果找不...
  • SSL免费证书,在阿里云上下载,一年到期。 里面有个.fpx文件和txt文件。fpx是你的证书, txt内是你的密码。 配置到tomcat中,需要将.fpx转成jsk格式的证书。(不知道为啥转,不转的话你可以试试) 转换地址: ...
  • linux 关闭vmware-hostd和vmware-authdla两个服务 vmware-hostd 端口:443 vmware-authdla 端口:902 这两个服务和共享虚拟机和远程接入共享虚拟机有关,所以对于很多人来说都是没有的服务,强烈建议关闭它们,...
  • Linux下 nginx配置ssl证书实现https访问

    万次阅读 2018-08-08 22:15:47
    配置ssl证书之前,先准备SSL证书,至于获取的途径很多(阿里云的服务,第三方服务购买)。这里不详细解释。以下是我的SSL证书 准备好证书后,找到nginx的安装目录,我的安装位置为:/usr/local/nginx 进入 ...
  • 有关linux下apache2的ssl

    2011-09-27 14:22:44
    一、安装  1、安装openssl(http://www.openssl.org)  ./configure  make  su  make install  2、安装mod_ssl  apache2内置mod_ssl,所以只需要编译时加参:  -
  • Vsftp(Very Secure FTP)是一种在Unix/Linux中非常安全且快速稳定的FTP服务器。 Vsftpd的实现有三种方式: 1、匿名用户形式:在默认安装的情况下,系统只提供匿名用户访问 2、本地用户形式:以/etc/passwd中的用户...
  • TLS(或传输层安全性)及其前身SSL(代表安全套接字层)是用于将正常流量包装在受保护的加密包装器中的Web协议。 使用此技术,服务器可以在服务器和客户端之间安全地发送流量,而不必担心消息会被外部方拦截和读取...
  • Linux下基于OpenSSL的SSL安全通信设计

    千次阅读 2012-07-02 11:38:29
    本程序可以自由使用,请遵守GPL规范... OpenSSL中的SSL安全通信可以分为两类,两类基本上的操作相同,一类是建立SSL环境后使用BIO读写,另一类是直接在socket上建立SSL上下文环境。本文主要讨论在socket上建立
  • Linux 安装nginx 并配置SSL详细步骤

    千次阅读 2020-08-18 19:34:54
    查看nginx版本 /usr/local/nginx/sbin/nginx -v 2.6:nginx常见命令 /usr/local/nginx/sbin/nginx 启动 /usr/local/nginx/sbin/nginx -s stop 关闭 /usr/local/nginx/sbin/nginx -s reload 重启 3.SSL配置 3.1:...
  • 转:...本文档介绍了CentOS系统下Tomcat 8.5或9部署SSL证书的操作说明。 环境准备 操作系统:CentOS 7.6 64位 Web服务器:Tomcat 8.5...
  • Linux下Tomcat部署并启用SSL

    千次阅读 2019-07-29 16:09:26
    CentOS Linux release 7.6.1810 (Core) # uname -r 3.10.0-957.el7.x86_64 //关闭SELinux //关闭firewall或按需打开对应端口 //下载部署Tomcat Java //Java版本 jdk-11.0.4_linux-x64_bin # wget http...
  • SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层对网络连接进行加密。  安全证书既包含了用于...
  • CentOS Linux release 7.6.1810 (Core) # uname -r 3.10.0-957.el7.x86_64 //关闭SELinux //firewall按需打开或关闭 //通过阿里云申请免费SSL证书(需要一个阿里云账户,一个域名) [在Nginx/Tengine服务器上安装证书...
  • 配置ssl证书之前,先准备好SSL证书,至于获取的途径很多,不清楚的可以自行搜索,也可以留言 准备好证书后,找到nginx的安装目录,我的安装位置为:/usr/local/nginx 进入 conf/nginx.conf,编辑nginx的config文件 ...
  • Linux下安装Apache并启用SSL

    千次阅读 2019-07-29 17:25:15
    CentOS Linux release 7.6.1810 (Core) # uname -r 3.10.0-957.el7.x86_64 # openssl version OpenSSL 1.0.2k-fips 26 Jan 2017 //关闭SELinux //关闭firewall或按需打开对应端口 # firewall-cm...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 52,339
精华内容 20,935
关键字:

linux关闭ssl

linux 订阅