sexta-feira, 25 de dezembro de 2015

Habilitar conexão SSL no servidor MySQL com Windows 10


1) Instalar openssl para windows para gerar os certificados: http://slproweb.com/products/Win32OpenSSL.html

2) Criar uma pasta qualquer para armazanar os certificados, ex: "d:\MySqlCerts".

3) Gerar os certificados, depois de muitas tentativas a única forma que deu certo foi seguindo essas instruções http://askubuntu.com/questions/194074/enabling-ssl-in-mysql. Veja a resposta do usuário user262116, ele explica o porque dessa maneira funcionar (tem um lance de converter o certificado SHA1 do formato PKCS #8 para PKCS#1).

# Generate a CA key and certificate with SHA1 digest
openssl genrsa 2048 > ca-key.pem
openssl req -sha1 -new -x509 -nodes -days 3650 -key ca-key.pem > ca-cert.pem

# Create server key and certficate with SHA1 digest, sign it and convert
# the RSA key from PKCS #8 (OpenSSL 1.0 and newer) to the old PKCS #1 format
openssl req -sha1 -newkey rsa:2048 -days 730 -nodes -keyout server-key.pem > server-req.pem
openssl x509 -sha1 -req -in server-req.pem -days 730  -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 > server-cert.pem
openssl rsa -in server-key.pem -out server-key.pem

# Create client key and certificate with SHA digest, sign it and convert
# the RSA key from PKCS #8 (OpenSSL 1.0 and newer) to the old PKCS #1 format
openssl req -sha1 -newkey rsa:2048 -days 730 -nodes -keyout client-key.pem > client-req.pem
openssl x509 -sha1 -req -in client-req.pem -days 730 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 > client-cert.pem
openssl rsa -in client-key.pem -out client-key.pem
Obs. 1: para conseguir chamar o openssl a partir da pasta que você criou, precisa acrescentar a pasta do openssl no path do windows (Variáveis do sistema/path).
Obs. 2: durante a geração dos certificados algumas perguntas serão feitas, pode apertar enter e ir passando por todas. Não sei pra que servem...

4) Alterar o arquivo my.ini. Esse arquivo também tem um macete, ele fica na pasta "C:\ProgramData\MySQL\MySQL Server 5.7", e não na "C:\ProgramFiles\MySQL\MySQL Server 5.7" como mencionado em vários sites e creio que inclusive no manual do MySql.
Acrescentar as seguintes linhas na parte [mysqld] do arquivo:
ssl-ca = "D:/MySqlCerts/ca-cert.pem"
ssl-cert = "D:/MySqlCerts/server-cert.pem"
ssl-key = "D:/MySqlCerts/server-key.pem"

5) Depois disso basta reiniciar o servico MySql. É para o SSL estar habilitado, como mostrado no console do MySql abaixo:

mysql> show variables like '%ssl%';
+---------------+-------------------------------+
| Variable_name | Value                         |
+---------------+-------------------------------+
| have_openssl  | YES                           |
| have_ssl      | YES                           |
| ssl_ca        | D:/MySqlCerts/ca-cert.pem     |
| ssl_capath    |                               |
| ssl_cert      | D:/MySqlCerts/server-cert.pem |
| ssl_cipher    |                               |
| ssl_crl       |                               |
| ssl_crlpath   |                               |
| ssl_key       | D:/MySqlCerts/server-key.pem  |
+---------------+-------------------------------+
9 rows in set, 1 warning (0.00 sec)

6) Pelo MySQL Workbench editar uma conexão e na aba SSL deixar como o seguinte:

7) Falta descobrir como fazer a conexão do vb usar SSL numa aplicação desktop.

terça-feira, 1 de dezembro de 2015

Em que pé estou

Estou fazendo uma nova versão da placa, tentando eliminar alguns probleminhas e melhorando outras coisas.

O problema é tempo... 

Minha idéia é deixar a placa funcionando também com 3,3V. É preciso analisar os datasheets dos componentes, calcular e testar com 3,3V (Arduino Due, Raspberry, ESP8266, etc).

Na parte esquerda da placa, onde fica o espaço reservado para o Arduino, deixar uma matriz de furos metalizados com distância de 2,54mm. Assim dá para soldar componentes se alguém quiser alguma coisa a mais, ou soldar conectores para espetar um ESP8266...




Preciso da ajuda de pessoas que se identifiquem com o projeto, tenham conhecimento técnico e possam perder um tempo com isso.

Minha formação é engenharia elétrica e sempre trabalhei como integrador de automação industrial (programação de CLP). Então meu conhecimento de eletrônica é básico (hobbysta).

Ao meu ver, esses seriam os próximos passos:

1) Analizar o esquemático: propor melhorias e ver a questão do 3,3V.
2) Finalizar o layout da placa
3) Mandar fazer a placa, montar e testar.


O início

Com as incríveis possibilidades que projetos como o Arduino e o Raspberry trouxeram, surgiu a idéia de fazer um módulo de entradas e saídas digitais para ser usado com qualquer uma dessas novas plataformas de desenvolvimento.

É comum ver nos blogs e fóruns dessa área, pessoas que querem automatizar alguma coisa: casa, horta, aquário, etc. Eu, por exemplo, estou construindo uma casa e um dos meus objetivos é deixar a iluminação 100% automatizada.
A partir dessas observações e necessidades comecei a desenvolver uma placa com 16 entradas e 16 saídas digitais.

Mas não queria fosse alguma coisa muito gambiarra. Queria fazer uma placa com suporte para trilho (para fixação em painel), bornes do tipo macho e fêmea (para facilitar a manutenção), entradas e saídas com isolação óptica (confiabilidade). E também queria fazer com componentes não SMD para facilitar minha vida na hora de soldar.


Foi então que nasceu o primeiro protótipo:









Nessa placa estou usando dois 74HC165 e dois 74HC595 para conseguir as 16 entradas e 16 saídas (transistor). Aproveitei e coloquei um circuito de detecção de zero cross. Assim as saídas podem funcionar para dimerização de lâmpadas.
A parte do IO é alimentada por uma fonte de 12Vcc e o Arduino estou alimentando pela porta usb dele.
Na foto estou usando um Mega devido a capacidade de memória. O programa foi ficando grande... Mas para projetos menores o Uno atende tranquilo. Nessa versão da placa são usados sete GPIO do Arduino (3 para as entradas, 3 para as saídas e 1 para o zero cross).

Segue um vídeo do dimmer:


Nesse vídeo estou comunicando usando o protocolo Modbus/TCP e na parte do celular estou usando o iRidium (um software Russo muito animal para automação residencial - necessita licença). http://www.iridiummobile.net/

A placa desenhei com a versão free do DipTrace (http://www.diptrace.com/) e mandei fazer na China: http://www.pcbway.com/. O que atrapalha é o frete e imposto, mas o prazo é recorde se pedir pela DHL: em torno de 10 dias as placas estão na sua mão.

Como as saídas são a transistor e a placa dá a possibilidade de ser usada também como dimmer, foi necessário desenvolver os módulos a relê e triac. Então voltei pra bancada e o resultado foi esse:




Um acoplador relê/dimmer: dependendo dos componentes é simples relê ou um relê que atraca quando o triac é disparado.