I've never tried master-master replication, but I have set up SSL connections with pt-table-checksum. Hopefully, my notes below may help answer some of your SSL-related questions.
In my case, I have master-slave replication set up using SSL connections and I'm using Percona Toolkit 2.1.2. Since the way to set it up was not obvious, I thought my notes might help save you some time and effort in your situation. Below is an example of how I got the SSL connections working for the pt-table-checksum connections to both the master and slave database servers.
The key is to pass the DSN information (containing the SSL settings) to the slave by explicitly passing the defaults-file (e.g., -F=/etc/my.cnf.percona) to the slave using the "--recursion-method dsn" setting. From what I've read on Percona's web site and by reviewing the pt-table-checksum code, the DSN information is not copied from one connection to the next in later versions of the Percona Toolkit (starting with 2.0, I believe). So, you have to set up the slave connection separately from the master.
Pass DSN information for the slave connection using:
--recursion-method dsn="D=percona,t=dsns,F=/etc/my.cnf.percona"
Assumptions:
a. The "percona" database account has proper privileges for Percona's pt-table-checksum. I recommend using "REQUIRE SSL" to ensure the account is required to use SSL connections.
b. The slave and master are set up to use SSL connections
Note: All of the steps below are done on the master.
(1) To pass the SSL settings for the DBI connection (i.e., the DSN config), create a separate my.cnf file specifically for the percona software.
/etc/my.cnf.percona
[client]
ssl=1
user=percona
password=xxxxxxxxx
ssl-capath=/etc/mysql/ca/crt
The /etc/my.cnf.percona file will be used to set up the SSL connections to both the master and slave.
Make sure to set the ownership & permissions on the file since it contains a password:
chown root:root /etc/my.cnf.percona (if it's not already owned by root or a system account)
chmod 0600 /etc/my.cnf.percona
(2) Test the /etc/my.cnf.percona settings
# mysql --defaults-file=/etc/my.cnf.percona --host slave.domain.com
mysql> \s
--------------
mysql Ver 14.14 Distrib 5.5.23, for Linux (x86_64) using readline 5.1
Connection id: 162
Current database:
Current user: percona@master.domain.com
SSL: Cipher in use is DHE-RSA-AES256-SHA
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server version: 5.5.23-log MySQL Community Server (GPL)
Protocol version: 10
Connection: slave.domain.com via TCP/IP
Server characterset: latin1
Db characterset: latin1
Client characterset: utf8
Conn. characterset: utf8
TCP port: 3306
Uptime: 2 days 2 hours 8 min 7 sec
# mysql --defaults-file=/etc/my.cnf.percona --host master.domain.com
mysql> \s
--------------
mysql Ver 14.14 Distrib 5.5.23, for Linux (x86_64) using readline 5.1
Connection id: 581433
Current database:
Current user: percona@master.domain.com
SSL: Cipher in use is DHE-RSA-AES256-SHA
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server version: 5.5.23-log MySQL Community Server (GPL)
Protocol version: 10
Connection: master.domain.com via TCP/IP
Server characterset: latin1
Db characterset: latin1
Client characterset: utf8
Conn. characterset: utf8
TCP port: 3306
Uptime: 9 days 3 hours 5 min 49 sec
(3) Set up the DSN table in the percona database on the master
On the master:
Create the percona database (if it does not already exist):
mysql> create database percona;
If the percona database already exists and you want to redo everything from scratch, drop the checksums & dsns tables if they already exist:
mysql> drop table percona.checksums; -- do this only if you are sure you want to start over & redo everything
mysql> drop table percona.dsns; -- ok to drop this, we're recreating it in the next step
Create the dsns table in the percona database:
mysql> use percona;
mysql> CREATE TABLE `dsns` (
-> `id` int(11) NOT NULL AUTO_INCREMENT,
-> `parent_id` int(11) DEFAULT NULL,
-> `dsn` varchar(255) NOT NULL,
-> PRIMARY KEY (`id`)
-> );
Insert the slave info into the table:
mysql> insert into dsns (dsn) values ("h=slave.domain.com");
(4) Run the pt-table-checksum and explicitly pass the defaults-file (-F=/etc/my.cnf.percona) to the slave using the "--recursion-method dsn" setting
/usr/bin/pt-table-checksum -F /etc/my.cnf.percona h=master.domain.com --recursion-method dsn="D=percona,t=dsns,F=/etc/my.cnf.percona"
master connection uses "-F /etc/my.cnf.percona h=master.domain.com"
slave connection uses '--recursion-method dsn="D=percona,t=dsns,F=/etc/my.cnf.percona"'
This should create the checksums table in the percona database and connect to the slave (and master) using SSL connections.